標籤:分代 程式 code sdn block views UI nes 體驗
【項目1-成員函數、友元函數和一般函數有差別】參考解答
(1)閱讀以下的程式,體會凝視中的說明(要執行程式,請找到課程首頁並複製代碼)
//例:使用成員函數、友元函數和一般函數的差別#include <iostream>using namespace std;class Time{public: Time(int h,int m,int s):hour(h),minute(m),sec(s) {} void display1(); //display1是成員函數 friend void display2(Time &); //display2是友元函數 int getHour(){return hour;} int getMinute(){return minute;} int getSec(){return sec;}private: int hour; int minute; int sec;};void Time::display1() //成員函數display1的實現,dispaly1前加Time::{ //以hour形式直接訪問私人資料成員,實質是this->hour形式 cout<<hour<<":"<<minute<<":"<<sec<<endl;}void display2(Time &t) //友元函數dispaly2的實現,不加Time::,友元並非類的成員{ //儘管不是類的成員函數。卻能夠用t.hour的形式直接訪問私人資料成員——這就是友元 cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;}void display3(Time &t) //display3是一般函數,dispaly3前不加Time::{ //不能直接訪問。僅僅能用公用介面t.getHour()形式訪問私人資料成員 cout<<t.getHour()<<":"<<t.getMinute()<<":"<<t.getSec()<<endl;}int main(){ Time t1(10,13,56); t1.display1(); //成員函數這樣調用:對象名.函數名() display2(t1); //友員函數的調用和一般函數無異(但實現中能夠不同) display3(t1); //一般函數的調用 return 0;}
(2)模仿上面的示範範例,完畢求點類中距離的任務。你須要實現求距離函數的三種版本號碼:分別利用成員函數、友元函數和一般函數求兩點間距離的函數,並設計main()函數完畢測試。
提示:此項目和範例的差別在於“距離是一個點和另外一個點的距離”,不同版本號碼在參數上有體現。三個版本號碼建議分開測試,也能夠如示範範例,放在一個程式中完畢。
以下是點類的部分代碼。
class CPoint {private: double x; // 橫座標 double y; // 縱座標 public: CPoint(double xx=0,double yy=0):x(xx),y(yy){} ……//請繼續寫須要的代碼};
【項目2-友元類】 參考解答
定義以下兩個類的成員函數(為體驗友元類,實際上本例並不一定是一個好的設計。將兩個類的合并為一個DateTime,日期、時間都處理更好)
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類的私人資料成員
【項目3-用多檔案組織多個類的程式】 參考解答
將上一周“項目2-帶武器的遊戲角色”用“一個項目多個檔案”的方式實現,當中兩個類的聲明放在一個.h檔案裡,每一個類的成員函數分別放一個檔案。main()函數用一個檔案。體會這樣安排的長處。
2015級C++第7周項目 友元、共用資料保護、多檔案結構