class A{
protected:
int var;
};
class B{
protected:
int var;
};
class C : public A, public B {};
这里会发生什么?变量合并了吗?我可以具体调用一个,例如 B::var = 2 等吗?
class A{
protected:
int var;
};
class B{
protected:
int var;
};
class C : public A, public B {};
这里会发生什么?变量合并了吗?我可以具体调用一个,例如 B::var = 2 等吗?
您的课程C
将有两个变量,B::var
并且A::var
. 在您之外C
可以像这样访问它们(如果您更改为public:
),
C c;
c.A::var = 2;
尝试访问c.var
将导致错误,因为没有名称为 的字段var
,只有A::var
和B::var
。
在内部C
,它们的行为与常规字段一样,再次具有名称A::var
和B::var
.
您可以通过A::var
和B::var
分别在 C 类中访问它们。
这是一个涵盖相同问题的链接。
如果你只指var
inside of C
,编译器不知道你的意思是A::var
or B::var
,编译器会告诉你这var
是模棱两可的。因此,您必须在使用时完全限定名称var
。
不会发生合并,任何实例都C
将包含这两个变量。