#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 distance3 ( CPoint &, CPoint &);//一般函数的声明 double CPoint :: distance1 ( CPoint & t)//成员函数的实现,要加域运算符 { return sqrt( ( t.x - x) * (t.x - x ) + ( t.y - y ) * ( t.y - y ) ); } double distance2 ( CPoint & t1, CPoint & t2)//友元函数的实现,不属于类,不需要加域运算符 { return sqrt( (t1.x - t2.x ) * ( t1.x - t2.x ) + (t1.y - t2.y ) * (t1.y - t2.y ) ); } double distance3 ( CPoint & t1, CPoint & t2) { return sqrt( (t1.getx() - t2.getx() ) * (t1.getx() - t2.getx() ) + (t1.gety() - t2.gety() ) * (t1.gety() - t2.gety() ) ); }//以公共接口的形式访问私有成员 int main () { CPoint c1 ( 3 , 2 ) , c2 ( 5 , 7 ); cout << "此两点之间的距离为:" << c1. distance1 ( c2 ) << endl; cout << distance2 ( c1, c2 ) << endl; cout << distance3 ( c1 , c2 ) << endl; system("pause"); return 0; }
调用友元函数要提前声明
第七周任务二
最新推荐文章于 2023-04-09 18:21:14 发布