/* * Copyright (c) 2013, 煙台大學電腦學院 * All rights reserved. * 檔案名稱:test.cpp * 作者:樊露露 * 完成日期:2013 年 4 月 15 日 * 版本號碼: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(23,59,32); Date d1(12,25,2012); 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 m,int d,int y){ month=m; day=d; year=y;}//定義時間類的成員函數,其中的Date是友元類,可以直接調用Date中得私人成員void Time::add_a_second(Date &d){ if(++sec>=60) ++minute,sec-=60; if(minute>=60) ++hour,minute-=60; if(hour>=24) ++d.day,hour-=24; if(d.day>30) ++d.month,d.day-=30;//Q. if(d.month>12) ++d.year,d.month-=12;//Q.}void Time::display(Date &d){ cout<<d.month<<"/"<<d.day<<"/"<<d.year<<" "; cout<<hour<<":"<<minute<<":"<<sec<<endl;}