class A { ... ... int var; }; class B : public A { friend class C; ... ... }; class C { ... ... inline void Fun(); }; inline void C::Fun() { var=0; ... ... } 请教各位: 在class C中的函数Fun()是否可以访问class A中的private数据成员var?
----------------------------------------------------------
情形1:
class A
{
private:
int var;
};
这时B也不能看到父类的私有成员var,当然B's friend C也看不到。
----------------------------------------------------------
情形2:
class A
{
protected:
int var;
};
这时B能看到父类的保护成员var, var作为B的保护成员(public 继承)
这时
(1)如果var作为A的成员访问,由于C is not A's friend,
C::Fun()不能访问 var
这段程序编译错误:
void C::Fun()
{
A a;
a.var; // access denied
}
(2) 如果var作为B的成员访问,由于C is B's friend
and var is B's protected member inherited
from A
所以这段程序是合法的:
void C::Fun()
{
B b;
b.var; // access approved. OK.
}
----------------------------------------------------------
to micropentium6(小笨)
>我认为不行,道理嘛,你儿子的朋友不一定是你爸爸的朋友