2015級C++第7周項目 友元、共用資料保護、多檔案結構

來源:互聯網
上載者:User

標籤:分代   程式   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周項目 友元、共用資料保護、多檔案結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.