一、问题及代码
- /*
- * 文件名称:youyuanhanshu
- * 作 者:夏廷辉
- * 完成日期:2016年4月9日
- * 版 本 号:vc6.0
- * 对任务及求解方法的描述部分:实现求距离函数的三种版本,分别利用成员函数、友元函数和一般函数求两点间距离的函数,并设计main()函数完成测试
- * 输入描述:输入两点的坐标
- * 问题描述:如下
- * 程序输出:略
- * 问题分析:如下
- * 算法设计:略
- */
- #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){}
- void distance1(CPoint p1,CPoint p2);
- friend void distance2(CPoint p1, CPoint p2);
- double getx(){return x;}
- double gety(){return y;}
- };
- void CPoint::distance1(CPoint p1,CPoint p2)
- {
- double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
- cout<<"d="<<d<<endl;
- }
- void distance2(CPoint p1,CPoint p2)
- {
- double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
- cout<<"d="<<d<<endl;
- }
- void distance3(CPoint p1, CPoint p2)
- {
- double d=sqrt((p1.getx()-p2.getx())*(p1.getx()-p2.getx()) + (p1.gety()-p2.gety())*(p1.gety()-p2.gety()));
- cout<<"d="<<d<<endl;
- }
- int main()
- {
- CPoint p1(3,4), p2(2,1);
- p1.distance1(p1,p2);
- distance2(p1, p2);
- distance3(p1, p2);
- return 0;
- }
二、运行结果
三、心得体会
做的时候搞混了x与y,经同学帮忙后才搞懂。
四、知识点总结
友元函数可以直接调用类中的数据成员,一般函数不可以,需通过成员函数才能使用。