C++中的友元(friend)
提出问题
我们知道类具有封装和信息隐藏的特性。只有类的成员函数可以访问类的私有成员,程序中的其他函数不能访问私有成员。非成员函数可以访问类中的公共成员,但是如果所有的数据成员都被定义为公共的,这将破坏隐藏的特性。另外需要注意的是,在某些情况下,尤其是一些成员函数被多次调用时,传递参数、类型检查和安全检查都需要时间,影响了程序的运行效率。
为了解决上述问题,提出了使用好友的方案。Friend是在类外定义的常用函数,但需要在类内解释。为了与类的成员函数相区别,在解释之前使用了关键字friend。Friend不是成员函数,但它可以访问类中的私有成员。友元的作用是提高程序的运行效率,但是破坏了类的封装性和隐蔽性,使得非成员函数可以访问类的私有成员。
朋友可以是函数,叫做朋友函数;朋友也可以是类,称为朋友元类。
朋友
友元函数的特征在于可以访问类中私有成员的非成员函数。从句法上来说,友元函数和普通函数是一样的,也就是在定义和调用上和普通函数是一样的。下面举个例子来说明friend函数的应用。
#包括
#包括
分类点
{
公共:
点(双xx,双YY){ x = xx;y = yy}
void Getxy();
朋友双倍距离(点&a,点& b);
私人:
双x,y;
};
void Point::Getxy()
{
cout
0条评论