您的位置:首页 > 其它

第5周项目4-成员函数、友元函数和一般函数的区别

2015-04-14 18:34 190 查看
/*
*copyright (c)2015,烟台大学计算机学院
*All rights reserved
*文件名称:project.cpp
*作者:孙春红
*完成日期:2015年4月14日
*版本号:v1.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){}
double Distance1(CPoint p)const;
friend double Distance2(CPoint &,CPoint &);
double get_x()
{
return x;
}
double get_y()
{
return y;
}
};
double Distance3(CPoint &,CPoint&);
int main()
{
CPoint cp(1,3),p(2,3);
cout<<"用成员函数求距离: "<<endl;
cout<<cp.Distance1 (p)<<endl;
cout<<"用友元函数求距离: "<<endl;
cout<<Distance2(cp,p)<<endl;
cout<<"用普通函数求距离: "<<endl;
cout<<Distance3(cp,p)<<endl;
return 0;
}
double CPoint::Distance1(CPoint p)const
{
double d;
d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
return d;
}
double Distance2 (CPoint &p1,CPoint &p2)
{
double d;
d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
return d;
}
double Distance3 (CPoint &p1,CPoint &p2)
{
double d;
d=sqrt((p1.get_x()-p2.get_x())*(p1.get_x()-p2.get_x())+(p1.get_y()-p2.get_y())*(p1.get_y()-p2.get_y()));
return d;
}


运行结果:



知识点总结:

阅读完程序后,了解友元函数、成员函数和一般函数的区别,学会写出程序

学习心得:

在编写一般函数的代代码时,照着友元函数的方式写了,导致出现error,原因是x和y

是私有的,可以在友元函数中使用,却不可以在一般函数中直接使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐