成员函数、友元函数和一般函数的区别(两点间距离)

来源:互联网 发布:step文件打开软件 编辑:程序博客网 时间:2024/05/22 17:16
/*  Copyright  (c)  2016*    All rights reserved*    文件名称:3.cpp*   作者:刘丽*   完成日期:2016年 4  月 7日*   版本号: v1.0**   问题描述:使用成员函数、友元函数和一般函数的区别(两点间距离)
*/#include <iostream>#include<cmath>using namespace std;double distance1(class CPoint &a,class CPoint &b );class CPoint{private:    double x;  // 横坐标    double y;  // 纵坐标 public:    CPoint(double xx=0,double yy=0):x(xx),y(yy){};    friend double distance1( CPoint &, CPoint & );//友元函数    CPoint(const CPoint &a);    double distance2(const CPoint &b);//成员函数};CPoint::CPoint(const CPoint &a){    x=a.x;    y=a.y;}double CPoint::distance2(const CPoint &b){    double sum;    sum=(x-b.x)*(x-b.x)+(y-b.y)*(y-b.y);    return  sqrt(sum);}int main(){    CPoint p1(1,20),p2(8,99);    int x1=1,y1=20,x2=8,y2=99;    double answer;    double distance3(int,int ,int,int);    answer=distance1(p1,p2);//友元函数    cout<<"answer="<<answer<<endl;    answer=distance3(x1,x2 ,y1,y2);//一般函数    cout<<"answer="<<answer<<endl;    answer=p1.distance2(p2);//成员函数    cout<<"answer="<<answer<<endl;    return 0;}double distance1( CPoint &a, CPoint &b ){    double sum;    sum=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);    return  sqrt(sum);}double distance3(int x1,int x2 ,int y1,int y2)//一般函数{    double sum;    sum=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);    return  sqrt(sum);}


 

 

心得:

         类只开放他的成员函数,若想使用他的成员变量需要用到友元函数。

0 0
原创粉丝点击