//5_6.cpp 使用友元函数计算两点间的距离
//友元函数是类中用关键字friend修饰的非成员函数
#include <iostream>
#include <cmath>
// cmath是c++标准风格的头文件,位于std命名空间,用法和math.h差不多,都是包含一些常见的数学函数。
//具体参考: http://www.ggv.com.cn/forum/clib/clib.html
using namespace std;
class Point //Point类定义
{
public: //外部接口
Point(int xx=0, int yy=0) {X=xx;Y=yy;} //构造函数
int GetX() {return X;}
int GetY() {return Y;}
friend float fDist(Point &a, Point &b); //友元函数声明
private: //私有数据成员
int X,Y;
};
//友元函数可以是一个普通的函数,也可以是其他类的成员函数。
//虽然它不是本类的成员函数,但是它的函数体中可以通过对象名访问类的私有和保护成员
float fDist(Point &p1, Point &p2) //友元函数实现
{ double x=double(p1.X-p2.X); //通过对象访问私有数据成员
double y=double(p1.Y-p2.Y);
return float(sqrt(x*x+y*y));
}
int main() //主函数
{
Point myp1(1,1),myp2(4,5); //定义Point类的对象
cout<<"The distance is:";
cout<<fDist(myp1,myp2)<<endl; //计算两点间的距离
//友元函数是类中用关键字friend修饰的非成员函数
#include <iostream>
#include <cmath>
// cmath是c++标准风格的头文件,位于std命名空间,用法和math.h差不多,都是包含一些常见的数学函数。
//具体参考: http://www.ggv.com.cn/forum/clib/clib.html
using namespace std;
class Point //Point类定义
{
public: //外部接口
Point(int xx=0, int yy=0) {X=xx;Y=yy;} //构造函数
int GetX() {return X;}
int GetY() {return Y;}
friend float fDist(Point &a, Point &b); //友元函数声明
private: //私有数据成员
int X,Y;
};
//友元函数可以是一个普通的函数,也可以是其他类的成员函数。
//虽然它不是本类的成员函数,但是它的函数体中可以通过对象名访问类的私有和保护成员
float fDist(Point &p1, Point &p2) //友元函数实现
{ double x=double(p1.X-p2.X); //通过对象访问私有数据成员
double y=double(p1.Y-p2.Y);
return float(sqrt(x*x+y*y));
}
int main() //主函数
{
Point myp1(1,1),myp2(4,5); //定义Point类的对象
cout<<"The distance is:";
cout<<fDist(myp1,myp2)<<endl; //计算两点间的距离
}
本文转自dllglvzhenfeng51CTO博客,原文链接:http://blog.51cto.com/1443208/300312,如需转载请自行联系原作者