第7周项目2:友元类
来源:互联网 发布:云墙mac破解版 编辑:程序博客网 时间:2024/06/07 12:18
/* * Copyright(c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:第7周项目2:友元类 * 作者:于子娴 * 完成日期:2016.4.13 * 版本号:v1.0 * * 问题描述:定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期、时间都处理更好) * 输入描述: * 程序输出: */#include<iostream>using namespace std;class 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;}//下面定义两个类中的成员函数,要求不得再增加成员函数//注意体会在Time的成员函数中可以调用Date类的私有数据成员Time::Time(int h,int m,int s){ hour=h; minute=m; sec=s;}int days(int m, int y); //days函数返回y年m月的天数void Time::add_a_second(Date &d1){ if(++sec>=60) ++minute,sec-=60; if(minute>=60) ++hour,minute-=60; if(hour>=24) ++d1.day,hour-=24; if(d1.day>days(d1.month,d1.year)) ++d1.month,d1.day=1; if(d1.month>12) ++d1.year,d1.month-=12;}void Time::display(Date &d1){ cout<<d1.year<<"年"<<d1.month<<"月"<<d1.day<<"日"; 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) //days函数返回y年m月的天数{ int d; switch(m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: d=31; break; case 4: case 6: case 9: case 11: d=30; break; default: { if((y%4==0&&y%100!=0)||(y%400==0)) d=29; else d=28; } } return d;}
运行结果:
<img src="http://img.blog.csdn.net/20160413171229182" alt="" /><img src="http://img.blog.csdn.net/20160413171249135" alt="" /><img src="http://img.blog.csdn.net/20160413171309260" alt="" />
<pre class="cpp" name="code">知识点总结:从一定程度上讲,友元是对数据隐蔽和封装的破坏。在一个类中,可以利用关键字friend将其他函数或类声明为友元。友元类的所有成员函数都自动成为友元函数。若A类为B类的友元类,则A类的所有成员函数都是B类的友元函数,都可以访问B类的私有和保护成员。注:友元关系是单向、不能传递、不能继承的。学习心得:友元类在使用前要进行声明。莫忘记!程序中的int days(int m, int y); 函数,是一般函数。
0 0
- 第7周项目2友元类
- 第7周-项目2-友元类
- 第7周项目2:友元类
- 第7周项目2-友元类
- 第7周项目2-友元类
- 第7周项目2-友元类
- 第7周项目2
- 第7周项目2
- 第7周【项目2
- 第7周【项目2
- 第7周项目2
- 第7周 【项目2
- 第7周项目2 友元类(时间的进阶)
- C++第7周项目3 - 友元类
- 第7周,项目3,友元类
- 第7周项目三-友元类
- 第7周项目3友元类
- 第6周项目2 武器友元类
- iOS中磨砂视图的实现和总结blurEffectView
- Android 5.0以后版本打开“有权查看使用情况的应用”
- word两幅图并排并且插入题注不会乱
- 简单实现Google play 横向RecyclerListView效果
- 数字的组合
- 第7周项目2:友元类
- mybatis的配置文件结构
- java 数字精准计算方法,解析公式,类似 3*(1+2)
- android开发-获取wifi列表
- hdu 1024(滚动数组优化)
- Linux命令(面试题)
- HTML 元素和有效的 DTD
- 第6周项目4 静态成员函数
- Thread2 关键字