第七周 任务二

来源:互联网 发布:tcp编程实例 编辑:程序博客网 时间:2024/05/19 05:33
/* 实验内容:利用成员函数、友元函数和一般函数,实现三个版本的求两点间距离的函数  * 程序的版权和版本声明部分  * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved.  * 文件名称: 两点之间的距离                             * 作    者:  薛广晨                             * 完成日期:  2012       年  4    月  1      日  * 版 本号:  x1.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){} 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(2, 2);CPoint c2(5, 8);    c1.Distance1(c2); Distance2(c1, c2);Distance3(c1, c2);system("pause");return 0;}

上机感言:友元函数太好了,不是成员函数却可以随便访问别人的家,但是也不是无拘无束的,必须的指定对象