第七周项目2—友元类
2016-04-11 13:37
477 查看
/*Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:杨驰 *完成日期:2016年4月11日 * *问题描述:定义两个类的成员函数,将两个类合并为一个Date Time。 */ #include<iostream> using namespace std; 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; }; Time::Time(int h,int m,int s):hour(h),minute(m),sec(s) {} Date::Date(int mo,int d,int y):month(mo),day(d),year(y) {} void Time::display(Date &d) { cout<<hour<<":"<<minute<<":"<<sec<<endl; cout<<d.year<<"/"<<d.month<<"/"<<d.day<<endl; } void Time::add_a_second(Date &t) { sec++; if(sec>=60) { minute+=sec/60; sec%=60; if(minute>=60) { hour+=minute/60; minute%=60; if(hour>=24) { t.day+=hour/24; hour%=24; switch(t.month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(t.day>31) { t.month+=t.day/31; t.day%=31; } case 2: if((t.year%100!=0&&t.year%4==0)||t.year%400==0) { if(t.day>29) { t.month+=t.day/29; t.day%=29; } } else { t.month+=t.day/28; t.day%=28; if(t.month>12) { t.year+=t.month/12; t.month%=12; } } case 4: case 6: case 9: case 11: if(t.day>30) { t.month+=t.day/30; t.day%=30; } if(t.month>12) { t.year+=t.month/12; t.month%=12; } } } } } } int main( ) { Time t1(23,59,58); Date d1(2,28,2013); for(int i=0; i<=100; i++) { t1.add_a_second(d1); t1.display(d1); } return 0; }
运行结果:
相关文章推荐
- OSI七层模型的功能以及设备
- Java 调用cmd.exe命令
- Android使用AttributeSet自定义控件的方法
- SharedPreference存取Bitmap
- 数据探查与可视化平台 Caravel
- python数据类型操作方法
- CI框架层级分类
- 使用struts2实现文件上传
- leetcode编程题(4)Median of Two Sorted Arrays
- Head First设计模式
- 怎么解决svn清理失败且路径显示乱码问题
- 点击空白处 div隐藏掉了
- Git常用命令备忘
- 统计代码git提交的行数
- tfs 任务自定义项
- android: 获取屏幕的宽度和高度
- Android 使用Vector XML文件创建矢量图片资源
- Cygwin完全下载指南
- windows 创建SSH Key
- mysql相关总结