/*
02. * Copyright (c) 2016,烟台大学计算机与控制工程学院
03. * All rights reserved.
04. * 文件名称:main.cpp
05. * 作 者:王俊锐
06. * 完成日期:2016年4月13日
07. * 版 本 号:v1.0
08. *
09. * 问题描述:求距离函数的三种版本:分别利用成员函数、友元函数和一般函数求两点间距离的函数,并设计main()函数完成测试。
10. */
02. * Copyright (c) 2016,烟台大学计算机与控制工程学院
03. * All rights reserved.
04. * 文件名称:main.cpp
05. * 作 者:王俊锐
06. * 完成日期:2016年4月13日
07. * 版 本 号:v1.0
08. *
09. * 问题描述:求距离函数的三种版本:分别利用成员函数、友元函数和一般函数求两点间距离的函数,并设计main()函数完成测试。
10. */
#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 getx(){return x;}
double gety(){return y;}
};
class juli
{
private:
CPoint a,b;
double len;
double x,y;
public:
juli(CPoint aa,CPoint bb):a(aa),b(bb){}
double getlen(){return len;}
void handle1();
friend void handle2(juli &);
};
void juli::handle1()
{
x=a.getx()-b.getx();
y=a.gety()-b.gety();
len=sqrt(x*x+y*y);
cout<<len<<endl;
}
void handle2(juli &l) //友元函数可以直接访问私有成员
{
cout<<l.len<<endl; }
void handle3(juli &l) //一般函数调用类是只能调用公共接口
{
cout<<l.getlen()<<endl;
}
int main()
{
CPoint a(3,4),b(0,0);
juli l(a,b);
l.handle1();
handle2(l);
handle3(l);
return 0;
}