至今,我不明白为什么使用友元(friend)函数!(50分赠送)
我不明白为什么使用友元(friend)函数,使用friend的地方都可以用public来声明!! 问题点数:50、回复次数:7Top
1 楼AloneWolf(孤狼)回复于 2002-04-01 10:01:59 得分 0
public声明的任何类都可以访问,friend的只有friend的类可以访问Top
2 楼fz_zhou(vcfan)回复于 2002-04-01 10:12:52 得分 0
对楼上的friend类定义表示不解!
friend 就是比如你自己类中有一些保护成员变量和函数,只想让一些特定的类使用,然后你就可以把那些类定义为自己类的友员!
class A
{
protected:
int i;
SetValue(int nValue )
{ j = nValue; }
private:
int j;
public:
int k;
friend calss B;
};
class B
{
A a;
a.SetValue(5);//OK
a.i =10;//OK
a.j = 20;//Wrong
};
class C
{
A a;
A.SetValue( 5 );//Wrong;
A.k = 5;//OK
}
void main()
{
A a;
B b;
C c;
}
明白否!
Top
3 楼wwwquiccklwl(lwl)回复于 2002-04-01 10:17:36 得分 0
友元,就是相信别人啦。你把谁声明为友元,你就是信任她,那么她就可以“滥用你的一切”啦!!! :)Top
4 楼oyxiaoyu0(小雨仔)回复于 2002-04-01 10:33:25 得分 0
public在一个类实例化后的对象中也可以访问的!
但friend却不可以!只可以在他的友员类中访问的!·
Top
5 楼qingbo(轻波)回复于 2002-04-01 15:53:02 得分 0
在类外的访问类中的私有变量Top
6 楼liangshoulong(咖啡需要学习)回复于 2002-04-01 15:57:11 得分 0
关注!Top
7 楼mage_ningxia(不听话)回复于 2002-04-01 18:33:42 得分 50
以public声明来代替友员有个致命的坏处,那就是他会影响到你的派生类,如果你的派生类还有自己的派生类......如此下去,那么这就了不得了,你的继承体系会乱作一团,你无法控制你的子类的那些危险行为,友员则只是简单的向某些特定的类开放自己的细节,这样便于控制。Top




