首页 > 代码库 > 使用友元类处理日期和时间

使用友元类处理日期和时间

#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;
};


void main( )
{
    Time t1(23,59,32);
    
    Date d1(12,29,2012);
    
    for(int i=0; i<=80; i++)
    {
        t1.add_a_second(d1);
        t1.display(d1);
    }
    
    system("pause");
}

//初始化时间
Time::Time(int h, int m, int s)
{
    hour = h;
    minute = m;
    sec = s;
}

//初始化日期
Date::Date(int m, int d, int y)
{
    month = m;
    day = d;
    year = y;
}

void Time::add_a_second(Date &d)//增加1秒,1秒后可能会到了下一天,乃到下一月、下一年
{
    sec++;//增加1秒

    if(sec>59)//当超过59秒后
    {
        sec = sec % 60;
        minute++;//增加1分钟
    }

    if(minute>59)//当超过59分钟后
    {
        minute = minute % 60;
        hour++;//增加1小时
    }

    if(hour>23)//当超过23小时后
    {
        hour = hour % 24;

        d.day++;//增加1天
    }

     if(d.day>30)//当超过30天后
    {
        d.day = d.day % 30;

        d.month++;//增加1个月
    }

     if(d.month>12)//当超过12个月后
    {
        d.month = d.month % 12;

        d.year++;//增加1年
    }
}

//显示日期和时间
void Time::display(Date &d)//显示时间,格式:月/日/年 时:分:秒
{
    cout<<d.year<<'/'<<d.month<<'/'<<d.day<<" "<<hour<<':'<<minute<<':'<<sec<<endl;
}


执行结果: