скажем, у нас есть 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
, каким будет член? частный или защищенный лол?
Рис. 2.
а если сделать так:
class B :
virtual public A // note public this time!
{
};
class C :
virtual protected A // same as before
{
};
Я полагаю, что member
будет общедоступным во втором примере, не так ли?