採用成員函式和友元函式計算給定兩個座標點之間的距離
阿新 • • 發佈:2018-12-18
設計一個用來表示直角座標系的Location類,在主程式中建立類Location的兩個物件A和B,要求A的座標點在第3象限,B的座標點在第2象限,分別採用成員函式和友元函式計算給定兩個座標點之間的距離,要求按如下格式輸出結果:
A(x1,y1), B(x2,y2),
Distance1=d1
Distance2=d2
其中:x1、y1、x2、y2為指定座標值,d1和d2為兩個座標點之間的距離。
#include<iostream> #include<cmath> using namespace std; class Location{ public: Location(double a ,double b);//建構函式 double getx();//成員函式,取x座標值 double gety();//成員函式,取y座標值 double distance(Location&d);//成員函式,求給定兩點之間的距離 friend double distance1(Location&,Location&);//友元函式,求給定兩點之間 private: double x,y; }; Location::Location(double a,double b)//建構函式的定義; { x=a; y=b; } double Location:: getx()//輸出x; { return x; } double Location:: gety()//輸出y; { return y; } double Location::distance(Location&d) { double d1; d1=sqrt((this->x-d.x)*(this->x-d.x)+(this->y-d.y)*(this->y-d.y)); //this指標是包含在每一個成員函式中的一個特殊指標,它是指向本類物件的一個指標, //它的值未被呼叫的成員函式所在物件的地址,在這裡可以寫成A.x,A.y; cout<<"Distance1="<<d1<<endl; return 0; } double distance1(Location& c,Location& d) { double d2; d2=sqrt((c.x-d.x)*(c.x-d.x)+(c.y-d.y)*(c.y-d.y)); cout<<"Distance2="<<d2<<endl; return 0; } int main() { Location A(-1,-1); Location B(-1,1); cout<<"A("<<A.getx()<<","<<A.gety()<<") , B("<<B.getx()<<","<<B.gety()<<")"<<endl; A.distance(B); distance1(A,B); return 0; }