您的位置:首页 > 其它

第七周上机报告(项目二:两点间距离之不同函数的实现)

2013-04-15 11:07 204 查看
/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: 两点间距离——三种函数的实现.cpp
* 作者:王昕彤
* 完成日期: 2013年 4  月 15  日
* 版本号: v1.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) {}
    // 请继续写需要的代码
    double distance1(CPoint &); // 成员函数声明
    friend double distance2(CPoint &,CPoint &); // 友元函数声明
    int getx()
    {
        return x;
    }
    int gety()
    {
        return y;
    }
};
double distance3(CPoint &,CPoint &);  //一般函数声明
double CPoint::distance1(CPoint &t)  //成员函数的实现,dispaly1前加CPoint::
{
    double dx,dy;
    dx=x-t.x;
    dy=y-t.y;
    return sqrt(dx*dx+dy*dy);
}
double distance2(CPoint &t1,CPoint &t2)  //友元函数的实现,distance2前不加CPoint::,并不是类的成员函数
{
    //不是类的成员函数,却可以t1.x的形式直接访问私有数据成员——友元
    double dx,dy;
    dx=t1.x-t2.x;
    dy=t1.y-t2.y;
    return sqrt(dx*dx+dy*dy);
}
double distance3(CPoint &t1,CPoint &t2)  //一般函数的实现,distance1前加CPoint::
{
    //不能直接访问,只能用公共接口t1.getx()形式访问私有数据成员
    double dx=t1.getx()-t2.getx(),dy=t1.gety()-t2.gety();
    return sqrt(dx*dx+dy*dy);
}
int main()
{
    CPoint t1(10,13),t2(5,9);
    t1.distance1(t2);  //成员函数这样调用
    distance2(t1,t2);  //友员函数的调用和一般函数无异
    distance3(t1,t2);  //一般函数的调用
    cout<<"成员函数:"<<t1.distance1(t2)<<endl;
    cout<<"友元函数:"<<distance2(t1,t2)<<endl;
    cout<<"一般函数:"<<distance3(t1,t2)<<endl;
    return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: