第六周项目四:成员函数、友元函数和一般函数有区别(实践项目)

来源:互联网 发布:时间煮雨抄袭 知乎 编辑:程序博客网 时间:2024/05/17 22:20

问题及代码:

/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:  成员函数、友元函数和一般函数有区别 .cpp*作    者:白云飞*完成日期:2015年4月9日*版 本 号: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 display1(CPoint &);    //display1是成员函数    void display4(CPoint &);    friend double display2(CPoint &,CPoint &);  //display2是友元函数    int getX()    {        return x;    }    int getY()    {        return y;    }};double display3(CPoint &,CPoint &);//display3是一般函数double CPoint::display1(CPoint &p)  //成员函数display1的实现{    return sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));}double display2(CPoint &p1,CPoint &p2)  //友元函数dispaly2的实现,不加CPoint::,友元并不是类的成员{    return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));}double display3(CPoint &p1,CPoint &p2)  //display3是一般函数,dispaly3前不加CPoint::{    //不能直接访问,只能用公共接口getX()形式访问私有数据成员    return sqrt((p1.getX()-p2.getX())*(p1.getX()-p2.getX())+(p1.getY()-p2.getY())*(p1.getY()-p2.getY()));}int main(){    CPoint  p1(3,3),p2(6,6);    cout<<"p1点坐标:("<<p1.getX()<<","<<p1.getY()<<")"<<'\t'<<"p2点坐标:("<<p2.getX()<<","<<p2.getY()<<")"<<endl;    cout<<"调用成员函数计算两点间距离的结果:"<<p1.display1(p2)<<endl;  //成员函数这样调用:对象名.函数名()    cout<<"调用友员函数计算两点间距离的结果:"<<display2(p1,p2)<<endl;   //友员函数的调用和一般函数无异(但实现中可以不同)    cout<<"调用一般函数计算两点间距离的结果:"<<display3(p1,p2)<<endl;   //一般函数的调用    return 0;}


运行结果:

 

学习心得:

认清三种函数的区别

0 0
原创粉丝点击