|
|
1
21
如果直到运行时才知道将使用哪些类,则必须使用涉及虚拟函数调用的子类型多态性。 与静态绑定调用相比,虚拟方法调用的性能开销非常小。我劝你看看这个问题的答案 SO question. |
|
|
2
3
我同意m-sharp的观点,即您不会避免运行时多态性。 如果你看重的是优化而不是优雅,试着换一种说法
它并不漂亮,当然也不是OOP(更像是对旧的“C”的回归),但是如果虚拟方法足够简单,那么应该得到一个不需要调用的函数(取决于足够好的编译器和优化选项)。使用dynamic_cast或typeid的变体可能更优雅/安全,但请注意,这些特性有其自身的开销,这可能与虚拟调用相当。 您最有可能从上面看到改进的地方是,如果某些类方法不是ops,并且它使您免于调用它们,或者如果函数包含公共循环不变代码,并且Optimizer成功地将其从循环中提升出来。 |
|
3
0
您可以使用Ole C路径并使用联合。虽然这也会很混乱。 |