第六周项目五 友元类
来源:互联网 发布:c语言生成1-20随机数 编辑:程序博客网 时间:2024/06/05 14:38
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:刘佳琦 * 完成日期:2015年 4 月 10 日 * 版 本 号:v1.0 * * 问题描述: 定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期、时间都处理更好) * 程序输入:无 * 程序输出:时间 */#include<iostream>using namespace std;int days(int m, int y);class Date; //对Date类的提前引用声明class Time{public: Time(int,int,int); void add_a_second(Date &); //增加1秒,1秒后可能会到了下一天,乃到下一月、下一年 void display(Date &); //显示时间,格式:月/日/年 时:分:秒private: int hour; int minute; int sec;};class Date{public: Date(int,int,int); friend class Time; //Time为Date的友元类private: int month; int day; int year;};int main( ){ Time t1(23,59,32); Date d1(12,31,2013); //测试时,再试试Date d1(2,28,2013)会如何 for(int i=0; i<=100; i++) { t1.add_a_second(d1); t1.display(d1); } return 0;}//下面定义两个类中的成员函数,要求不得再增加成员函数Date::Date(int m,int d,int y){ month=m; day=d; year=y;}void Time::display(Date &d){ cout<<d.month<<"月"<<d.day<<"日"<<d.year<<"年"<<endl; cout<<hour<<":"<<minute<<":"<<sec<<endl;}Time::Time(int h,int m,int s){ hour=h; minute=m; sec=s;}void Time::add_a_second(Date &a){ sec++; if(sec>=60) { sec-=60; minute++; } if(minute>=60) { minute-=60; hour++; } if(hour>=24) { hour-=24; a.day++; } if(a.day>days(a.month,a.year)) { a.day-=days(a.month,a.year); a.month++; } if(a.month>12) { a.month-=12; a.year++; }}int days(int m, int y) //days函数返回y年m月的天数{ int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if((y%100==0&&y%4!=0)||(y%400==0)) d[2]=29; return d[m];}//注意体会在Time的成员函数中可以调用Date类的私有数据成员
运行结果:
学习心得:
之前写在纸上的程序在调试的时候有两处错误,第一Date不是Time的友元函数,因此,Date类不能访问Time类,a.hour报错,hour直接用就可以。还有if判断的时候粗心大意,导致输出结果错了。
0 0
- 第六周项目五:友元类
- 第六周 项目五:友元类
- 第六周项目五 友元类
- 第六周项目五--友元类
- 第六周项目五:友元类
- 第六周项目五 友元类
- 第六周项目五 友元类
- 第六周 项目五-友元类
- 第六周 项目五-友元类
- 第六周 项目五 友元类
- 第六周项目五 友元类
- 第六周项目五-友元类
- 第六周项目五 友元类
- 2015年第六周项目五:友元类
- 第六周项目五——友元类
- 第六周项目五——友元类
- 15第六周项目五——友元类
- 第六周 课后实践:项目五——友元类
- R语言对苏州天气的分析及预测 温度篇
- mysql数据库中的换行符与textarea中的换行符
- 关于举办 2015年 Autodesk 助力云应用项目开发活动通知
- android在JNI_OnLoad入口函数下断点动态调试so库
- 在MacOS上homebrew的安装和使用
- 第六周项目五 友元类
- HTML5 canvas性能之画圈
- 老码说编程玩转swift读书笔记1
- jquery 选中 全选 反选 checked(请使用prop,用attr有bug)
- ListView错误
- Java线程池使用说明
- HashSet和HashMap
- Jquery控制DIV
- MQTT的学习研究(十七)Mosquitto简要教程(安装&使用)