/*
* 文件名称: 友元函数应用
* 作 者:孙红亮
* 完成日期:2015 年 4 月 12 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:略
* 输入描述: 得到图中的结果
* 问题描述:熟悉程序的编辑,运行过程 。
* 程序输出:略
* 问题分析: 无
* 算法设计: 略
二,运行结果
* 文件名称: 友元函数应用
* 作 者:孙红亮
* 完成日期:2015 年 4 月 12 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:略
* 输入描述: 得到图中的结果
* 问题描述:熟悉程序的编辑,运行过程 。
* 程序输出:略
* 问题分析: 无
* 算法设计: 略
*/
一,问题及代码
定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期、时间都处理更好)
#include <iostream>
#include <math.h>
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 &p)
{
double x1,y1,d;
x1=p.x-x;
y1=p.y-y;
d=sqrt(x1*x1+y1*y1);
return d;
}
double distance2(CPoint &p1,CPoint &p2)
{
double x1,y1,d;
x1=(p1.x-p2.x);
y1=(p1.y-p2.y);
d=sqrt(x1*x1+y1*y1);
return d;
}
double distance3(CPoint&p1,CPoint&p2)
{
double x1,y1,d;
x1=p1.getx()-p2.getx();
y1=p1.gety()-p2.gety();
d=sqrt(x1*x1+y1*y1);
return d;
}
int main()
{
CPoint p1(4,3),p2(7,1);
cout<<p2.distance1(p1)<<endl; //成员函数
cout<<distance2(p1,p2)<<endl; //友员函数
cout<<distance3(p1,p2)<<endl; //一般函数
return 0;
}
二,运行结果