第七週項目三-----成員函數,友元函數和一般函數的區別

/*
 * Copyright (c) 2013, 煙臺大學計算機學院
 * All rights reserved.
 * 作    者:紀麗娜
 * 完成日期:2013 年04月8日
 * 版 本 號:v1.0
 * 問題描述:利用成員函數、友元函數和一般函數,
 實現三個版本的求兩點間距離的函數,並設計main()函數完成測試。
class CPoint
{
private:
    double x;  // 橫座標
    double y;  // 縱座標
 public:
    CPoint(double xx=0,double yy=0):x(xx),y(yy){}
    ……//請繼續寫需要的代碼
};  
提示:此項目和例子的區別在於“距離是一個點和另外一個點的距離”,
參數個數上有體現。下面是點類的部分代碼。
*/
#include <iostream>
#include <cmath>
using namespace std;
void dis3();
class CPoint
{
private:
    double x;  // 橫座標
    double y;  // 縱座標
 public:
    CPoint(double xx=0,double yy=0):x(xx),y(yy){}
    //請繼續寫需要的代碼
    void dis1(CPoint);    //dis1是成員函數
    friend void dis2(CPoint &, CPoint );  //dis2是友元函數
    double getx()
    {
      double a=x;
      return a;
    }
    double gety()
    {
      double b=y;
      return b;
    }
};
 void CPoint::dis1(CPoint c3)
 {
     cout<<"成員函數"<<endl;
     double a,b,c;
     a=x-c3.getx();
     b=y-c3.gety();
     c=sqrt(a*a+b*b);
     cout<<"兩點之間的距離爲:"<<c<<endl;
 }
 void dis2( CPoint &c1,CPoint c2)
 {
    cout<<"友元函數"<<endl;
    double a,b,c;
     a=c1.x-c2.x;
     b=c1.y-c2.y;
     c=sqrt(a*a+b*b);
     cout<<"兩點之間的距離爲:"<<c<<endl;
 }
void dis3(double a,double b,double d,double f)
{
    cout<<"運用普通函數"<<endl;
    double c;
    c=sqrt((a-d)*(a-d)+(b-f)*(b-f));
    cout<<"兩點之間的距離爲:"<<c<<endl;
}
int main()
{
    CPoint c1(0,3),c2(4,0);
    c1.dis1(c2);
    dis2(c1,c2);
    double a=c1.getx(),b=c1.gety(),d=c2.getx(),f=c2.gety();
    dis3(a,b,d,f);
    return 0;
}


心得:普通函數最麻煩

        友元函數也沒多簡單

       還是不知道爲什麼要把它劃爲友元函數。。

        直接成員函數不是很簡單?

發佈了163 篇原創文章 · 獲贊 8 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章