C++实验3

来源:互联网 发布:邯郸市网络教研 编辑:程序博客网 时间:2024/05/21 15:06

一、问题及代码

/*  * 文件名称:友元函数的应用  * 作    者:刘坤* 完成日期:2016年4月8日  * 版 本 号:vc6.0  * 对任务及求解方法的描述部分:实现求距离函数的三种版本,分别利用成员函数、友元函数和一般函数求两点间距离的函数。* 输入描述:输入两点的坐标   * 问题描述:求两点的距离 * 程序输出:输出两点的距离 * 问题分析:区分成员函数、友元函数和一般函数的实现和调用 * 算法设计:略   */    #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 p1,CPoint p2);        friend void distance2(CPoint &p1, CPoint &p2);        double getx(){return x;}        double gety(){return y;}    };    void CPoint::distance1(CPoint p1,CPoint p2)    {        double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));            cout<<"d="<<d<<endl;    }    void distance2(CPoint &p1,CPoint &p2)    {        double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));            cout<<"d="<<d<<endl;        }    void distance3(CPoint p1, CPoint p2)    {        double d=sqrt((p1.getx()-p2.getx())*(p1.getx()-p2.getx()) + (p1.gety()-p2.gety())*(p1.gety()-p2.gety()));            cout<<"d="<<d<<endl;        }        int main()    {        CPoint p1(3,4), p2(2,1);            p1.distance1(p1,p2);        distance2(p1, p2);        distance3(p1, p2);        return 0;    }    
二、运行结果

三、心得体会

一直不懂友元函数的调用,后来看书明白了,可是一般成员函数又出问题了,折腾许久才弄懂,总感觉离不开课本。

四、知识点总结

友元函数可直接调用类里面的数据成员,一般函数不可以。


0 0
原创粉丝点击