条款40:明智而审慎的使用多重继承
对于我个人来说,显然不太赞成多重继承,这是C++的特性,如Java这样的程序是不支持多重继承的特性的,对应的Java提供了Interface.在C++中理解Interface比较难以找到比较的对象,如果一定要找到一个那可能一个不包含任何成员对象,只有纯虚函数接口的基类可以匹配。
但如果看过《Modern C++ Design》的人,一定会对多重继承影响深刻。多重继承在实现中还是存在很有意义的地方,如果说单一继承只是一维的话,那么多重继承就是多维的。所以在实现上就存在多重的交叉分解问题。
在多重继承的情况下,可能导致新的歧义性。还有可能出现的问题是钻石性继承结构,这会导致访问基类对象的歧义性,解决这个问题的办法是虚拟继承。如果看过Lippiman关于C++解析的那本书,那么就知道这样的代价其实是非常大的了。
多重继承的正确用途是存在的。那就是public继承某个接口和private协助实现某个类相结合的组合。