class A{
protected:
int var;
};
class B{
protected:
int var;
};
class C : public A, public B {};
这里会发生什么?变量是否合并?我可以通过特定的方式呼叫一个:B :: var = 2等。C++具有相同变量名称的多个父代
class A{
protected:
int var;
};
class B{
protected:
int var;
};
class C : public A, public B {};
这里会发生什么?变量是否合并?我可以通过特定的方式呼叫一个:B :: var = 2等。C++具有相同变量名称的多个父代
您的课C
将有两个变量,B::var
和A::var
。的C
外,您可以像这样访问它们(如果你改变public:
),
C c;
c.A::var = 2;
试图访问c.var
会导致一个错误,因为不存在与该名var
,只有A::var
和B::var
没有现场。
Inside C
它们的行为与常规字段类似,名称分别为A::var
和B::var
。
您可以分别通过A::var
和B::var
访问它们。
Here是一个覆盖相同问题的链接。
如果仅指var
的C
内,编译器不知道你是否意味着A::var
或B::var
,编译器会告诉你,var
是模糊的。因此,使用var
时必须完全限定名称。
没有合并发生,C
的任何实例都将包含这两个变量。
你甚至尝试过你建议的语法('B :: var')吗?这恰好是正确的! –