0
在普通钻石的情景:多重继承 - 虚拟修饰符
class MBase {
public:
MBase(int) {}
virtual char const* vf() const = 0;
virtual ~MBase() {}
};
class D1 : public MBase { //NOT VIRTUAL!!!
public:
D1() : MBase(1) {}
char const* vf() const { return "D1"; }
};
class D2 : virtual public MBase {
public:
D2() : MBase(2) {}
char const* vf() const { return "D2"; }
};
class Bottom : public D1, public D2 {
public:
char const* vf() const { return "Bottom"; }
}
如果我修改底部继承修饰符是虚拟的两个D1和D2什么会改变?我的意思是,这会产生什么影响:
class Bottom : public virtual D1, public virtual D2 {
public:
char const* vf() const { return "Bottom"; }
}
好的,所以我猜如果我有几个底部,都是从D1和D2实际继承的,那么叶子在它们中只有D1和D2的一个副本......非常感谢您的完美答案! – Bober02 2012-04-15 10:07:37