/*
* 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;
}
心得:普通函數最麻煩
友元函數也沒多簡單
還是不知道爲什麼要把它劃爲友元函數。。
直接成員函數不是很簡單?