可能重复:
虚函数和性能 - C++
我有一些课:
class I
{
public:
virtual void foo() = 0;
protected:
virtual ~I(){}
};
Run Code Online (Sandbox Code Playgroud)
此类不提供实例删除的接口,因此使析构函数保护是非常合理的解决方案.因此,不必将析构函数设为虚拟.但我有代码,它是虚拟的.
它看起来不是一个大错误,但它对于代码性能是否显着?当我们创建虚拟功能时,我们将另外一条记录添加到虚拟功能表中,当我们进行虚拟呼叫时,我们在此表中搜索.所以这意味着查找时间会增加.我对吗?
即使这是一个问题(它不是),不,它不会增加时间.查找不是运行时实际查找任何内容 - 无论vftable有多大都无关紧要.它确切知道在表中跳转的位置.
所以 - 调用virtual方法需要一些成本- 实际查找没有任何成本.
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |