第七周项目2-友元类(时间日期混合)
2016-04-17 14:36
363 查看
问题及代码:
运行结果:
![](http://img.blog.csdn.net/20160417143652826)
知识点总结:
A是B的友元类,说明A能访问B的私有成员,但是B却不能随便访问A的私有成员。
学习心得:这里面感觉很多细节应该写出来,比喻月份起码应该判断一下,但是写明白了也是好麻烦。
问题及代码:
/* *copyright (t) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:张晴晴 *完成日期:2016年4月17日 *版本号:v1.0 *问题描述:一个时间类一个日期类,两个类合并为一个,时间每次加一秒,共加100次。 *输入描述:无。 *程序输出:输出时间信息。 */ #include<iostream> using namespace std; class Date; class Time { public: Time(int h,int m,int s):hour(h),minute(m),sec(s){} void add_a_second(Date &);//增加一秒,一秒后可能会到了下一天,乃到下一月,下一年 void display(Date &); //显示时间,格式: 月/日/年 时:分:秒 private: int hour; int minute; int sec; }; class Date { public: Date (int mon,int da,int ye):month(mon),day(da),year(ye){} friend class Time;//time为date的友元类 private: int month; int day; int year; }; void Time::add_a_second(Date &a)//增加一秒,一秒后可能会到了下一天,乃到下一月,下一年 { sec+=1; if(sec>=60) { minute+=sec/60; sec=sec%60; } if(minute>=60) { hour+=minute/60; minute=minute%60; } if(hour>=24) { a.day+=hour/24; hour=hour%24; } if(a.day>31) { a.month+=a.day/31; a.day=a.day%31; } if(a.month>12) { a.year+=a.month/12; a.month=a.month%12; } } void Time::display(Date &d) //显示时间,格式: 月/日/年 时:分:秒 { cout<<d.year<<"/"<<d.month<<"/"<<d.day<<" "<<hour<<":"<<minute<<":"<<sec<<endl; } 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; }
运行结果:
知识点总结:
A是B的友元类,说明A能访问B的私有成员,但是B却不能随便访问A的私有成员。
学习心得:这里面感觉很多细节应该写出来,比喻月份起码应该判断一下,但是写明白了也是好麻烦。
相关文章推荐
- 2011.6-2012
- WebService学习总结(5)——WebService常见开发框架比较
- xrandr命令解决ubuntu15.10双屏分辨率问题
- httpPost
- php实现三级级联下拉框
- 【Chromium中文文档】沙箱FAQ
- Android支持库概述
- 第八周项目一(1) 数组作数据成员(工资类 1 常规数组做法)
- 数据结构学习-递归(2)
- 快速幂乘取模
- 从etcd看Raft协议
- vs2008调试遇到的问题
- ios简单的清除缓存代码
- 【Chromium中文文档】沙箱FAQ
- javascript jquery console调试方法说明
- 日常备忘
- 在python(windows操作系统)中安装、配置Tushare,希望对股票有兴趣的程序员有一点点帮助
- ZBlog你选择PHP还是ASP?
- [置顶] WebService学习总结(4)——第三方webService服务调用
- [置顶] WebService学习总结(4)——第三方webService服务调用