第七週上機實踐專案 專案1-成員函式,友元函式,和一般函式的區別(2)
阿新 • • 發佈:2019-02-08
問題及程式碼:
(2)模仿上面的示例,完成求點類中距離的任務。你需要實現求距離函式的三種版本:分別利用成員函式、友元函式和一般函式求兩點間距離的函式,並設計main()函式完成測試。
提示:此專案和例子的區別在於“距離是一個點和另外一個點的距離”,不同版本在引數上有體現。三個版本建議分開測試,也可以如示例,放在一個程式中完成。
下面是點類的部分程式碼。
class CPoint { private: double x; // 橫座標 double y; // 縱座標 public: CPoint(double xx=0,double yy=0):x(xx),y(yy){} ……//請繼續寫需要的程式碼 };
/* Copyright(c)2016,煙臺大學計算機與控制工程學院 All rights reserced 檔名稱:test.cpp 作 者:蔡汝佳 完成日期:2016年4月21日 版 本 號:v1.0 問題描述:閱讀下面的程式,體會註釋中的說明。 輸入描述: 程式輸出: */ #include <iostream> #include<cmath> using namespace std; class CPoint { private: double x; // 橫座標 double y; // 縱座標 public: CPoint(double xx=0,double yy=0):x(xx),y(yy){} //請繼續寫需要的程式碼 double distance1(CPoint &); friend double distance2(CPoint &,CPoint &); double getx(){return x;} double gety(){return y;} }; double CPoint::distance1(CPoint &p1) //成員函式 { double dx=x-p1.x; double dy=y-p1.y; return sqrt(dx*dx+dy*dy); } double distance2(CPoint &p1,CPoint &p2) //友元函式 { double dx=p1.x-p2.x; double dy=p1.y-p2.y; return sqrt(dx*dx+dy*dy); } double distance3(CPoint &p1,CPoint &p2) //一般函式 { double dx=p1.getx()-p2.getx(); double dy=p1.gety()-p2.gety(); return sqrt(dx*dx+dy*dy); } int main() { CPoint p1(10,13),p2(-5,6); cout<<"1. "<<p1.distance1(p2)<<endl; cout<<"2. "<<distance2(p1,p2)<<endl; cout<<"3. "<<distance3(p1,p2)<<endl; return 0; }
執行結果:
知識點總結:
學習心得:
一個英文的逗號打成了中文的逗號導致出現了錯誤,以後一定要注意。