假设我们有class A,B,C,D
A 是基础,B,C 介于两者之间,D 是在钻石模型中派生的。
笔记:
class B
class A
以私有模式继承 virtualy ,
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
那会是什么?私人或受保护的大声笑?
图二:
如果我们这样做会怎样:
class B :
virtual public A // note public this time!
{
};
class C :
virtual protected A // same as before
{
};
我想member
在第二个例子中会是公开的,是吗?