скажем, у нас есть class A,B,C,D
, где A - основание, B, C - между, а D получено в алмазной модели.
ПРИМЕЧАНИЕ:
class B
наследует виртуально class A
в приватном режиме,
class C
виртуальное наследство class A
в защищенном режиме.
class A
{
public:
int member; // note this member
};
class B :
virtual private A // note private
{
};
class C :
virtual protected A // note protected
{
};
class D :
public B, // doesn't metter public or whatever here
public C
{
};
int main()
{
D test;
test.member = 0; // WHAT IS member? protected or private member?
cin.ignore();
return 0;
}
теперь, когда мы создадим экземпляр class D
, что будет тогда членом? частный или защищенный LOL?
Рисунок №2:
что если мы сделаем так:
class B :
virtual public A // note public this time!
{
};
class C :
virtual protected A // same as before
{
};
Полагаю, member
будет публичным во втором примере, не так ли?