第七周实验报告(二)利用成员函数、友元函数和一般函数求两点之间距离

本文介绍了一种使用成员函数、友元函数和一般函数来计算两点间距离的方法。通过定义点类并实现不同类型的函数,展示了如何根据不同需求选择合适的函数进行计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生 

* All rights reserved.

* 文件名称:利用成员函数、友元函数和一般函数求两点之间距离

*    者:        晁阳                      

* 完成日期:     2012     4          4  

* 号:       t1.0  

* 对任务及求解方法的描述部分

* 输入描述: 

* 问题描述: 

* 程序输出:

 * 程序头部的注释结束

*/

	#include <iostream>  
	#include <cmath>  
	using namespace std;//你需要完成的任务是,利用成员函数、友元函数和一般函数,实现三个版本的求两点间距离的函数,并设计main()函数完成测试。此任务和上例的区别在于"距离是一个点和另外一个点的距离",参数个数上有体现。下面是点类的部分代码。  
    class CPoint    
	{  
	private:    
	    double x;  // 横坐标    
	    double y;  // 纵坐标    
	public:   
	    CPoint(double xx=0,double yy=0):x(xx),y(yy){}    
	    double Distance1(CPoint p) ;   // 两点之间的距离(一点是当前点,另一点为参数p)  
	    friend  double Distance2(CPoint &p1,CPoint &p2) ;   // 两点之间的距离  
	    void input();  //以x,y 形式输入坐标点  
	    double getx();    
	    double gety();    
	};  
	//返回坐标点  
	double CPoint::getx()    
	{    
	    return x;    
	}    
	double CPoint::gety()    
	{    
	    return y;    
	}    
	// 输入坐标点    
	void CPoint::input()    
	{    
	    char ch;    
	    cout<<"(输入坐标点(格式x,y )):";    
	    while(1)    
	    {    
	        cin>>x>>ch>>y;    
	        if (ch==',') break;    
	        cout<<"输入的数据格式不符合规范,请重新输入\n";    
	    }    
	}  
	// 求点到原点的距离    
	 
	double CPoint::Distance1(CPoint p)   //成员函数定义   
	{            
	    return sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));   
	}    
	//一般函数定义  
	double Distance3(CPoint &p1,CPoint &p2)  
	{  
	    double a,b,c,d;  
	    a=p1.getx();  
	    b=p1.gety();  
	    c=p2.getx();  
            d=p2.gety();   
	    return sqrt((a-c)*(a-c)+(b-d)*(b-d)); 
	}  
	// 友元函数定义  
	double Distance2(CPoint &p1,CPoint &p2)  
	{  
	    double a,b,c,d;  
	    a=p1.x;  
	    b=p1.y;  
	    c=p2.x;  
	    d=p2.y;    
	    return sqrt((a-c)*(a-c)+(b-d)*(b-d));
	}  
	void main( )    
	{    
	    double distance;    
	    CPoint p1,p2;    
	    cout<<"第1个点p1为";    
	    p1.input();    
	    cout<<"第2个点p2为";    
	    p2.input();    
	    distance=p1.Distance1(p2);    
        cout<<"成员函数求的两点距离为:"<<distance<<endl;  
	    distance=Distance2(p1,p2);  
	    cout<<"一般函数求得的两点距离为:"<<distance<<endl;  
	    distance=Distance3(p1,p2);  
	    cout<<"友元函数求得的两点距离为:"<<distance<<endl;  
	    system("PAUSE");    
	}  

上机感言:成员函数p.x   

                    友元函数p1.x 

                    一般函数p1.getx();

                友元函数介于成员函数和一般函数之间,友元函数可以直接调用私有成员不必再通过函数调用来取值。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值