有几个级别的基类会减慢一个类吗?A派生B派生C派生D派生F派生G,...
多重继承会减慢一个类吗?
非虚函数调用在运行时绝对没有性能损失,根据你不应该为你不使用的内容付出的c ++口头禅.在虚函数调用中,无论您有多少级别的继承或基类数,您通常都需要额外的指针查找.当然这是所有实现定义的.
编辑:如其他地方所述,在一些多继承场景中,在进行调用之前需要调整"this"指针.Raymond Chen描述了它如何适用于COM对象.基本上,在从多个基础继承的对象上调用虚函数可能需要额外的减法和在虚拟调用所需的额外指针查找之上的jmp指令.
[深度继承层次结构]通过添加不必要的复杂性极大地增加了维护负担,迫使用户学习许多类的接口,即使他们想要做的只是使用特定的派生类.它还可以通过向不真正需要它们的类添加不必要的vtable和间接性来影响内存使用和程序性能.如果您发现自己经常创建深层继承层次结构,则应该检查您的设计风格,看看您是否已经习惯了这种坏习惯.很少需要深层次的层次结构,而且几乎从不好.如果你不相信,但认为"OO只是不是没有大量继承的OO",那么一个好的反例要考虑的是[C++]标准库本身.- Herb Sutter