c++ Multiple parents with same variable name

后端 未结 3 1757
旧时难觅i
旧时难觅i 2020-12-31 08:24
class A{
    protected:
    int var;
};

class B{
    protected:
    int var;
};

class C : public A, public B {};

What happens here? Do the variab

相关标签:
3条回答
  • 2020-12-31 09:08

    You can access them in class C by A::var and B::var respectively.

    Here is a link that covers the same problem.

    0 讨论(0)
  • 2020-12-31 09:09

    If you only refer to var inside of C, the compiler does not know whether you mean A::var or B::var and the compiler will tell you that var is ambiguous. Therefore, you have to fully qualify the name when using var.

    No merging happens, any instance of C will contain both variables.

    0 讨论(0)
  • 2020-12-31 09:19

    You class C will have two variables, B::var and A::var. Outside of C you can access them like this (if you change to public:),

    C c;
    c.A::var = 2;
    

    Attempting to access c.var will lead to an error, since there is no field with the name var, only A::var and B::var.

    Inside C they behave like regular fields, again, with the names A::var and B::var.

    0 讨论(0)
提交回复
热议问题