第5周项目4-成员函数、友元函数和一般函数的区别

本文介绍了使用C++实现点类中的距离计算方法,包括成员函数、友元函数及普通函数三种方式,并通过实例展示了每种方法的具体实现过程。
/*  
*copyright (c)2015,烟台大学计算机学院  
*All rights reserved  
*文件名称:project.cpp  
*作者:孙春红  
*完成日期:2015年4月14日  
*版本号: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 Distance1(CPoint p)const;
    friend double Distance2(CPoint &,CPoint &);
    double get_x()
    {
        return x;
    }
    double get_y()
    {
        return y;
    }
};
double Distance3(CPoint &,CPoint&);
int main()
{
    CPoint cp(1,3),p(2,3);
    cout<<"用成员函数求距离: "<<endl;
    cout<<cp.Distance1 (p)<<endl;
    cout<<"用友元函数求距离: "<<endl;
    cout<<Distance2(cp,p)<<endl;
    cout<<"用普通函数求距离: "<<endl;
    cout<<Distance3(cp,p)<<endl;
    return 0;
}
double CPoint::Distance1(CPoint p)const
{
    double d;
    d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
    return d;
}
double Distance2 (CPoint &p1,CPoint &p2)
{
    double d;
    d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    return d;
}
double Distance3 (CPoint &p1,CPoint &p2)
{
    double d;
    d=sqrt((p1.get_x()-p2.get_x())*(p1.get_x()-p2.get_x())+(p1.get_y()-p2.get_y())*(p1.get_y()-p2.get_y()));
    return d;
}


运行结果:

知识点总结:

阅读完程序后,了解友元函数、成员函数和一般函数的区别,学会写出程序

学习心得:

在编写一般函数的代代码时,照着友元函数的方式写了,导致出现error,原因是x和y

是私有的,可以在友元函数中使用,却不可以在一般函数中直接使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值