来自:
http://blog.csdn.net/wbj1234566/article/details/2256642
简单的讲 :把类外部的类或函数声明为友元类和友元函数,使其能直接访问类中的私有成员。
格式: friend 类 或 函数 声明
//此语句可以放在类中的任意位置,与访问权限保留字无关。
需要注意几个方面:
1.友元关系是不可以传递的。
比方说你是我的友元而Joe是你的友元,但这并不意味着Joe是我的友元。
2.友元关系不能继承。
3.友元关系不是互通。
把class A设置为class B的友元并不会使得class B成为class A的友元,也许你愿意把你的秘密告诉我,但是,这并不意味着我愿意把我的秘密告诉你。
具体的用法详细见下面的示例:
#include
#include
classRadius
{
friendclassCircle;//声明Circle为Radius的友元类
friendvoidShow_r(Radius&n);//声明Show_r为友元函数
public:
Radius(intx)
{
r=x;
}
~Radius()
{
}
private:
intr;
};
voidShow_r(Radius &n)
{
cout<<"圆的半径为:"<<n.r<<endl;//调用Radius对象的私有成员变量r
}
classCircle
{
public:
Circle()
{
}
~Circle()
{
}
doublearea(Radius a)
{
s=a.ra.r3.1415926;//调用Radius对象的私有成员变量r
returns;
}
private:
doubles;
};
intmain(intargc,char*argv[])
{
Radius objRadius(9);
Circle objCircle;
Show_r(objRadius);
cout<<"面积为:"<<objCircle.area(objRadius)<<endl;
system("PAUSE");
returnEXIT_SUCCESS;
}
原文链接: https://www.cnblogs.com/cy568searchx/archive/2012/10/10/2718547.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/65340
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!