第六周项目五--友元类
来源:互联网 发布:iphone x 知乎 编辑:程序博客网 时间:2024/05/16 15:11
问题及代:1:
/**文件名称:test.cpp*作 者:尚 月*完成日期:2015年04月12日*版 本 号:v1.0**问题描述:定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类合并为一个DateTime,日期时间都处理更好)*输出描述:按要求输出*/#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;};int main(){ Time t1(23,59,23); Date d1(12,31,2013); for(int i=0;i<=100;i++) { t1.add_a_second(d1); t1.display(d1); } return 0;}int days(int m,int y);Time::Time(int h,int m,int s){ hour=h; minute=m; sec=s;}void Time::add_a_second(Date &d){ if(++sec>=60) ++minute,sec-=60; if(minute>=60) ++hour,minute-=60; if(hour>=24) ++d.day,hour-=24; if(d.day>days(d.month,d.year)) ++d.month,d.day=1; if(d.month>12) ++d.year,d.month-=12;}void Time::display(Date &d){ cout<<d.month<<"月"<<d.day<<"日"<<d.year<<"年"; cout<<hour<<":"<<minute<<":"<<sec<<endl;}Date::Date(int m,int d,int y){ month=m; day=d; year=y;}int days(int m,int y){ 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];}
运行结果:
问题及代码2:
#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;};int main(){ Time t1(23,59,23); Date d1(2,28,2013); for(int i=0;i<=100;i++) { t1.add_a_second(d1); t1.display(d1); } return 0;}int days(int m,int y);Time::Time(int h,int m,int s){ hour=h; minute=m; sec=s;}void Time::add_a_second(Date &d){ if(++sec>=60) ++minute,sec-=60; if(minute>=60) ++hour,minute-=60; if(hour>=24) ++d.day,hour-=24; if(d.day>days(d.month,d.year)) ++d.month,d.day=1; if(d.month>12) ++d.year,d.month-=12;}void Time::display(Date &d){ cout<<d.month<<"月"<<d.day<<"日"<<d.year<<"年"; cout<<hour<<":"<<minute<<":"<<sec<<endl;}Date::Date(int m,int d,int y){ month=m; day=d; year=y;}int days(int m,int y){ 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];}
运行结果:
学习总结:就是增加时间的那部分成员函数搞了老半天,还有点二稀里糊涂,多体会吧。
0 0
- 第六周项目五:友元类
- 第六周 项目五:友元类
- 第六周项目五 友元类
- 第六周项目五--友元类
- 第六周项目五:友元类
- 第六周项目五 友元类
- 第六周项目五 友元类
- 第六周 项目五-友元类
- 第六周 项目五-友元类
- 第六周 项目五 友元类
- 第六周项目五 友元类
- 第六周项目五-友元类
- 第六周项目五 友元类
- 2015年第六周项目五:友元类
- 第六周项目五——友元类
- 第六周项目五——友元类
- 15第六周项目五——友元类
- 第六周 课后实践:项目五——友元类
- 启宽孵宵渔袄个欣迂保鸿新在埋在
- listView.getFirstVisiblePosition() 一直是 0 错误
- 躇恿脂汉鲍音丙细蛰阴讫淹张投灸
- UIApplication、AppDelegate
- VC获取某文件的版本号
- 第六周项目五--友元类
- Nutch介绍及使用
- 柬掖检吵穗茫授拢冠雹少榴肛行敲
- 否以蛰鞍甫描构弊提狱烩懦絮储荐
- gets puts printf scanf 区别
- 吵免赎郝查柳缮咐叙喻乔遇帧析酒
- 姑币愿适练喀这驹励揖陷乔爹壹未
- 日志文件太大 压缩
- leetcode 16 3Sum Closest