问题及代码:
/*
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作 者:赵志君
* 完成日期:2016年4月13日
* 版 本 号: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 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;
}
运行结果:
学习心得:在这个代码中运用了类的组合,本以为自己可以熟练运用了,可是写起来确实错误百出,最终靠百度才找出原因,可见就学过的知识掌握不牢固,应该在以后的实践中将这些学过的知识尽量的用上,这样才可以熟能生巧,加强理解记忆。