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 类中访问它们。
这是一个涵盖相同问题的链接。
如果你只指varinside of C,编译器不知道你的意思是A::varor B::var,编译器会告诉你这var是模棱两可的。因此,您必须在使用时完全限定名称var。
不会发生合并,任何实例都C将包含这两个变量。