C++的多重继承,在一个多重继承体系中,当出现十字继承是,你必须对那个带有数据的class成为一个virtual base class,为了这么做,你必须令所有直接继承自他的classes采用“virtual 继承”
从正确的观点看,public继承应该总是virtual。但是该方法有个缺点,使用virtual 继承的哪些classes所产生出对象往往比non-virtual 继承的兄弟们体积大,访问virtual base classes 的成员变量,也比访问non-virtual-base-class 的成员速度慢很多,你要为virtual付出代价
virtual继承的成本还包括其他方面。支配“virtual base classes”初始化的规则比起non-virtual-base-classes的情况原味复杂而不直观。virtual base的初始化责任由继承体现的最底层classes负责,这
1、暗示classes若派生自virtual bases而需要初始化,必须认知其virtual bases 不论那些bases有多远。
2、当一个新的derived class加入继承体系中,它必须承担其virtual bases的初始化责任。
Public继承自某接口
Private继承自某实现。
多重继承当有个情节涉及 public继承某个Interface calss和private 继承某个协助实现的class 的两相组合。