友元类

来源:互联网 发布:linux下重装nodejs 编辑:程序博客网 时间:2024/05/24 04:44
/*      * 程序的版权和版本声明部分      * Copyright (c)2013, 烟台大学计算机学院学生      * All rightsreserved.      * 文件名称:time .cpp                                 * 作    者:徐本锡                                  * 完成日期:2013年4月12日      * 版本号: v1.0            * 输入描述:      * 问题描述:    */ #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(32,59,23);    Date d1(2012,25,12);    for(int i=0; i<=80; 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;}Date::Date(int y,int m,int d){year=y;month=m;day=d;}void Time::add_a_second(Date &a){sec=sec+1;while(sec>=60)    {        sec-=60;        ++minute;    }    while(minute>=60)    {        minute-=60;        ++hour;    }    while(hour>=24)    {        hour-=24;        ++a.day;    }    while(a.day>=30)    {        a.day-=30;        ++a.month;    }    while(a.month>12)    {        a.month-=12;        ++a.year;    }}void Time::display(Date &b){cout<<b.year<<"年"<<b.month<<"月"<<b.day<<"日"<<endl;cout<<hour<<":"<<minute<<":"<<sec<<endl;}


 

 

 

原创粉丝点击