/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作 者:
* 完成日期:2013 年04月8日
* 版 本 号:v1.0
* 问题描述:利用成员函数、友元函数和一般函数,
实现三个版本的求两点间距离的函数,并设计main()函数完成测试。
class CPoint
{
private:
double x; // 横坐标
double y; // 纵坐标
public:
CPoint(double xx=0,double yy=0):x(xx),y(yy){}
……//请继续写需要的代码
};
提示:此项目和例子的区别在于“距离是一个点和另外一个点的距离”,
参数个数上有体现。下面是点类的部分代码。
*/
#include <iostream>
#include <cmath>
using namespace std;
void dis3();
class CPoint
{
private:
double x; // 横坐标
double y; // 纵坐标
public:
CPoint(double xx=0,double yy=0):x(xx),y(yy){}
//请继续写需要的代码
void dis1(CPoint); //dis1是成员函数
friend void dis2(CPoint &, CPoint ); //dis2是友元函数
double getx()
{
double a=x;
return a;
}
double gety()
{
double b=y;
return b;
}
};
void CPoint::dis1(CPoint c3)
{
cout<<"成员函数"<<endl;
double a,b,c;
a=x-c3.getx();
b=y-c3.gety();
c=sqrt(a*a+b*b);
cout<<"两点之间的距离为:"<<c<<endl;
}
void dis2( CPoint &c1,CPoint c2)
{
cout<<"友元函数"<<endl;
double a,b,c;
a=c1.x-c2.x;
b=c1.y-c2.y;
c=sqrt(a*a+b*b);
cout<<"两点之间的距离为:"<<c<<endl;
}
void dis3(double a,double b,double d,double f)
{
cout<<"运用普通函数"<<endl;
double c;
c=sqrt((a-d)*(a-d)+(b-f)*(b-f));
cout<<"两点之间的距离为:"<<c<<endl;
}
int main()
{
CPoint c1(0,3),c2(4,0);
c1.dis1(c2);
dis2(c1,c2);
double a=c1.getx(),b=c1.gety(),d=c2.getx(),f=c2.gety();
dis3(a,b,d,f);
return 0;
}
心得:普通函数最麻烦
友元函数也没多简单
还是不知道为什么要把它划为友元函数。。
直接成员函数不是很简单?