【发布时间】:2010-09-22 11:17:20
【问题描述】:
是否有任何真正的理由不在 C++ 中将成员函数设为虚拟?当然,性能问题总是存在的,但在大多数情况下似乎并不成立,因为虚函数的开销相当低。
另一方面,我曾多次忘记将一个应该虚拟的函数设为虚拟。这似乎是一个比性能更大的论点。那么有什么理由不让成员函数默认为虚拟呢?
【问题讨论】:
-
虚拟函数以两种方式破坏性能:一是间接函数调用,正如您所说,它还不错。二、编译器不能内联函数调用。我有一个案例,GCC 4.3 在没有虚拟的情况下构建快 10 倍的代码。如果它可以内联,那么它可以做许多其他选择。
-
[D 编程语言][digitalmars.com/d/](据称是 C++ 升级版)默认情况下使每个函数虚拟化,如果没有必要,编译器会对其进行优化。因此,理论上它可以在未来为 C++ 完成
标签: c++ oop virtual-functions