c++中的友元不具有传递性
- 老子的朋友是老子的朋友,儿子的朋友是儿子的朋友
class Base
{
friend class F;//1
protected:
int a;
};
class Extend : public Base
{
friend class F;//2
protected:
int b;
};
class F
{
Base b;
Extend e;
void f()
{
b.a;//1.处不声明此处是错误的
e.b;//2.处不声明此处是错误的
e.a;//2.处不声明此处是错误的
}
};
- 你是我的朋友,他是我的朋友,但你不是他的朋友
class ni
{
//不能访问ta的成员
};
class wo
{
friend class ni;
};
class ta
{
friend class wo;
};
- 要想是两个类互为友元必须在两个类中都要声明对方。
网友评论