C++的多重继承

来源:互联网 发布:java list 相同的元素 编辑:程序博客网 时间:2024/04/30 03:01

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 的两相组合。

0 0
原创粉丝点击