effective C++: 6.继承与面向对象设计(三)

2014-11-24 03:15:38 · 作者: · 浏览: 3
l bases----不论那些bases距离多远,2、当一个新的derived class加入继承体系中,它必须承担起virtual bases(不论直接或间接)的初始化工作。

我们对virtual继承的忠告:第一,非必要不要使用virtual bases。第二,如果必须使用virtual bases,尽可能避免在其中放置数据。这样你就不需担心这些classes身上的初始化(和赋值)所带来的诡异事情了。

请记住:
1.多重继承比单一继承复杂。它可能导致新的歧义性,以及对virtual继承的需求。
2.virtual继承会增加大小、速度、初始化(及赋值)复杂度等等成本。如果virtual base class不带任何数据,将是最具实用价值的情况。
3.多重继承的确有正当用途。其中一个情节涉及“public继承某个Interface class”和“private继承某个协助实现的class”的两相组合。