第七周實驗 報告(二)

來源:互聯網
上載者:User
01.#include <iostream>  02.using namespace std;  03.class Time  04.{public:  05.    Time(int h,int m,int s):hour(h),minute(m),sec(s){}  06.    void display1(); //成員函式宣告  07.    friend void display2(Time &);  //友元函式宣告  08.    int getHour(){return hour;}  09.    int getMinute(){return minute;}  10.    int getSec(){return sec;}  11. private:  12.    int hour;  13.    int minute;  14.    int sec;  15.};  16.void display3(Time &);  //一般函式宣告  17.  18.void Time::display1()  //成員函數的實現,dispaly1前加Time::  19.{   //以hour形式直接存取私人資料成員,實質是this->hour形式  20.    cout<<hour<<":"<<minute<<":"<<sec<<endl;  21.}  22.void display2(Time &t)  //友元函數的實現,dispaly2前不加Time::,並不是類的成員函數  23.{   //不是類的成員函數,卻可以t.hour的形式直接存取私人資料成員——友元  24.    cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;  25.}  26.void display3(Time &t)  //一般函數的實現,dispaly1前加Time::  27.{   //只能用公用介面t.getHour()形式訪問私人資料成員  28.    cout<<t.getHour()<<":"<<t.getMinute()<<":"<<t.getSec()<<endl;  29.}  30.int main()  31.{   Time t1(10,13,56);  32.    t1.display1();  //成員函數這樣調用  33.    display2(t1);   //友員函數調用和一般函數無異  34.    display3(t1);   //一般函數的調用  35.    system("pause");  36.    return 0; 
 
需要完成的任務是,利用成員函數、友元函數和一般函數,實現三個版本的求兩點間距離的函數,並設計main()函數完成測試。此任務和上例的區別在於“距離是一個點和另外一個點的距離”,參數個數上有體現。下面是點類的部分代碼。
01.class CPoint    02.{private:    03.    double x;  // 橫座標    04.    double y;  // 縱座標    05. public:   06.    CPoint(double xx=0,double yy=0):x(xx),y(yy){}    07.    ……//請繼續寫需要的代碼  

解答

01.#include<iostream>  02.#include<Cmath>  03.  04.using namespace std;  05.  06.class CPoint   07.{  08.private:  09.      10.    double x;  11.    double y;  12.      13.public:  14.      15.    CPoint( double xx = 0, double yy = 0 ) : x(xx), y(yy){}  16.    double Distance1 ( CPoint & ) const;   //成員函式宣告  17.    friend double Distance2 ( const CPoint &, const CPoint & ); //友元函式宣告  18.    double getX() { return x;}  19.    double getY() { return y;}  20.};  21.  22.double Distance3 (  CPoint &,  CPoint & ); //一般函式宣告  23.  24.double CPoint::Distance1 ( CPoint &p ) const  25.{  26.    double  dx =  p.x - x, dy = p.y - y;  27.  28.    return  sqrt ( dx * dx + dy * dy) ;  29.       30.}  31.  32.double Distance2 ( const CPoint &X, const CPoint &Y )  33.{  34.    double dx =  X.x - Y.x, dy = X.y - Y.y;  35.  36.    return sqrt ( dx * dx + dy * dy );  37.      38.}  39.  40.double Distance3 (  CPoint &d1,  CPoint &d2 )  41.{  42.      43.    double dx = d1.getX() - d2.getX(), dy = d1.getY() - d2.getY();  44.  45.    return   sqrt ( dx * dx + dy * dy );  46.      47.}  48.  49.int main ()  50.{  51.    CPoint a1(2,4), a2(1,3);  52.      53.    cout << "以成員函數輸出" << a1.Distance1(a2) << endl;  54.      55.    cout << "以友元函數輸出" << Distance2(a1,a2) << endl;  56.      57.    cout << "以一般函數輸出" << Distance3(a1,a2) << endl;  58.      59.    system ("pause");  60.      61.    return 0;  62.} 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.