/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:理解成员函数、友元函数和一般函数的区别 并会熟练使用它们
* 作 者: 张斌
* 完成日期: 2012 年 04 月 02 日
* 版 本 号: 7-2-1
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述: 设计complex,使实部和虚部的类型为定义对象时用的实际类型
* 程序输出:
* 程序头部的注释结束
*/
#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 p) const;
friend void Distance2(CPoint &, CPoint &); //友元函数声明
double getX(){return x;}
double getY(){return y;}
};
void Distance3(CPoint &, CPoint &); //一般函数声明
void CPoint :: Distance1(CPoint p) const // 两点之间的距离(一点是当前点,另一点为参数p)
{
double d;
d = sqrt((p.x - x) * (p.x - x) + (p.y - y) * (p.y - y));
cout << "用成员函数输出" << "两点之间的距离:" << d << endl;
}
void Distance2(CPoint &X, CPoint &Y)
{
double d;
d = sqrt((X.x - Y.x) * (X.x - Y.x) + (X.y - Y.y) * (X.y - Y.y));
cout << "用友元函数输出" << "两点之间的距离:" << d << endl;
}
void Distance3(CPoint &a1, CPoint &a2)
{
double d;
d = sqrt((a1.getX() - a2.getX()) * (a1.getX() - a2.getX()) + (a1.getY() - a2.getY()) * (a1.getY() - a2.getY()));
cout << "用普通函数输出" << "两点之间的距离:" << d << endl;
}
int main()
{
CPoint c1(25, 24);
CPoint c2(52, 84);
c1.Distance1(c2);
Distance2(c1, c2);
Distance3(c1, c2);
system("pause");
return 0;
}