class A{
protected:
int var;
};
class B{
protected:
int var;
};
class C : public A, public B {};
What happens here? Do the variable merges? Can I call one in specific like, B::var = 2, etc.
class A{
protected:
int var;
};
class B{
protected:
int var;
};
class C : public A, public B {};
What happens here? Do the variable merges? Can I call one in specific like, B::var = 2, etc.
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.
You can access them in class C by A::var and B::var respectively.
Here is a link that covers the same problem.
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.