项目四(错误,烦乱版)。友元类

来源:互联网 发布:住宅成交数据 编辑:程序博客网 时间:2024/05/16 14:14

程序:

//友元类#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(2,28,2013);                 //测试时,再试试Date d1(2,28,2013)会如何    for(int i=0; i<=100; i++)    {        t1.add_a_second(d1);        t1.display(d1);    }    return 0;}Date::Date(int m,int d,int y){    month=m;    day=d;    year=y;}Time::Time(int h,int m,int s){    hour=h;    minute=m;    sec=s;}void Time::add_a_second(Date &d){    sec+=1;    if(sec==60)    {        sec=0;        minute+=1;        if(minute==60)        {            minute=0;            hour+=1;            if(hour==24)            {                hour=0;                d.day+=1;                //友元,年月日的判断                if(d.month==2)                {                    if(d.year%4==0&&d.year%100!=0||d.year%400==0)                    {                        if(d.day==29)                        {                            d.day-=28;                            d.month+=1;                        }                    }                    else                    {                        if(d.day==28)                        {                            d.day-=27;                            d.month+=1;                        }                    }                }                else if(d.month==4||d.month==6||d.month==9||d.month==11)                {                    if(d.day==30)                    {                        d.day-=29;                        d.month+=1;                    }                }                else                {                    if(d.day==31)                    {                        d.day-=30;                        d.month+=1;                    }                   if(d.month==12)                   {                       d.month=1;                       d.year+=1;                   }                }            }        }    }}void Time::display(Date &d){    cout<<d.year<<"年 "<<d.month<<"月 "<<d.day<<"日 "<<hour<<"时 "<<minute<<"分 "<<sec<<"秒"<<endl;}

结果:

            

体会:这是自己的,有一百多行,而且还有错误,但是一直没找出来,到后来就不爱找了。。。

0 0
原创粉丝点击