/******************Class A****************/
class A
{
public:
A();
friend class B;
void dis();
private:
void foo();
int i;
};
/******************Class B****************/
class B
{
public:
void foo()
{
int i = a.i;
a.dis();
a.foo();
};
private:
A a;
};
友元Class用法:
即A认定B为Friend,B即可访问A的任何成员变量及函数,相比较没有使用Friend机制而言,扩大了访问范围,B中可访问A中的Private/Protect的成员(这部分即为上边说到的扩大了的访问范围)。
具体上述例子分析:
通过在A类中指定B为Friend( friend class B;),使得在B中, 语句 (int i = a.i;及a.foo();)能通过编译,上述两个访问语句即为增加的访问范围。
注: A认定B为朋友,但是B未必认定A为朋友。