c ++具有相同变量名的多个父项

nah*_*hpr 9 c++ inheritance multiple-inheritance

class A{
    protected:
    int var;
};

class B{
    protected:
    int var;
};

class C : public A, public B {};
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?变量合并吗?我可以调用一个特定的,比如B :: var = 2等.

use*_*136 11

你的课C将有两个变量,B::varA::var.在C你之外可以这样访问它们(如果你改为public:),

C c;
c.A::var = 2;
Run Code Online (Sandbox Code Playgroud)

尝试访问c.var将导致错误,因为没有名称的字段var,仅A::varB::var.

在里面,C他们表现得像常规领域一样,名字A::varB::var.