c – 是否从没有虚拟方法的基类继承不良做法?

我回忆一下有关dynamic_cast的问题. dynamic_cast无法工作,因为基类没有虚方法.其中一个答案说,从没有虚拟方法的类派生通常意味着糟糕的设计.它是否正确?即使没有利用多态性,我仍然看不到这样做的错误.
最佳答案
这取决于我们所谈论的内容:

>对于Traits类(没有数据)它很好(std :: unary_function浮现在脑海中)
>对于私有继承(用于代替组合以从空基优化中受益),它也没关系

当您开始以多态方式处理此类Derived对象时,问题就来了.如果你有这样的位置,那就是明确的代码味道.

注意:即使上面提到的很好,你仍然提供了以多态方式使用该类的能力,因此你将自己暴露给微妙的错误.

转载注明原文:c – 是否从没有虚拟方法的基类继承不良做法? - 代码日志