第六周项目五友元类

来源:互联网 发布:简单的淘宝昵称大全 编辑:程序博客网 时间:2024/05/22 16:50
#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,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 hour,int minute,int sec){    this->hour=hour;    this->minute=minute;    this->sec=sec;}Date::Date(int year,int month,int day){    this->year=year;    this->month=month;    this->day=day;}void Time::add_a_second(Date &d1){    this->sec+=1;    if(this->sec>59)    {        this->minute+=(this->sec)/60;        this->sec=(this->sec)%60;    }    if(this->minute>59)    {        this->hour+=(this->minute)/60;        this->minute=(this->minute)%60;    }    if(this->hour>23)    {        d1.day+=(this->hour)/24;        this->hour=(this->hour)%60;    }    switch(d1.month)    {    case 1:        if(d1.day>30)        {            d1.month+=(d1.day)%30;            d1.day=(d1.day)%30;        }        break;    case 2:        if(((d1.year)%4==0 && (d1.year)%100!=0) || (d1.year)%400==0)        {            if(d1.day>29)            {                d1.month+=(d1.day)%29;                d1.day=(d1.day)%29;            }        }        else        {            if(d1.day>28)            {                d1.month+=(d1.day)%28;                d1.day=(d1.day)%28;            }        }            break;        case 3:            if(d1.day>31)            {                d1.month+=(d1.day)%31;                d1.day=(d1.day)%31;            }            break;        case 4:            if(d1.day>30)            {                d1.month+=(d1.day)%30;                d1.day=(d1.day)%30;            }            break;        case 5:            if(d1.day>31)            {                d1.month+=(d1.day)%31;                d1.day=(d1.day)%31;            }            break;        case 6:            if(d1.day>30)            {                d1.month+=(d1.day)%30;                d1.day=(d1.day)%30;            }            break;        case 7:            if(d1.day>31)            {                d1.month+=(d1.day)%31;                d1.day=(d1.day)%31;            }            break;        case 8:            if(d1.day>31)            {                d1.month+=(d1.day)%31;                d1.day=(d1.day)%31;            }            break;        case 9:            if(d1.day>30)            {                d1.month+=(d1.day)%30;                d1.day=(d1.day)%30;            }            break;        case 10:            if(d1.day>31)            {                d1.month+=(d1.day)%31;                d1.day=(d1.day)%31;            }            break;        case 11:            if(d1.day>30)            {                d1.month+=(d1.day)%30;                d1.day=(d1.day)%30;            }            break;        case 12:            if(d1.day>31)            {                d1.month+=(d1.day)%31;                d1.day=(d1.day)%31;            }            break;        }        if(d1.month>12)        {           d1.year+=(d1.month)/12;           d1.month=(d1.month)%12;        }}void Time::display(Date &d1){    cout<<"现在时间是:"<<endl;    cout<<d1.year<<"年"<<d1.month<<"月"<<d1.day<<"日";    cout<<this->hour<<"小时"<<this->minute<<"分"<<sec<<"秒"<<endl;}
<img src="http://img.blog.csdn.net/20150416202443541?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTYxNzc3Mzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20150416202448533?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTYxNzc3Mzg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

0 0
原创粉丝点击