【发布时间】:2012-11-14 23:06:45
【问题描述】:
我有两个类foo 和bar,其中一个是另一个的超类,它们都有一个方法hello_world。
class foo {
virtual void hello_world();
};
class bar : public foo {
void hello_world();
};
我的问题是:如果我将其设为虚拟,性能会不会有所不同
对于bar 的hello_world?会变成这样:
class foo {
virtual void hello_world();
};
class bar : public foo {
virtual void hello_world();
};
我将主要从bar 调用hello_world。
我知道虚函数会使函数变慢
因为我们确实运行时查找。但是对于这种情况,有什么区别吗?
【问题讨论】:
-
很难确切地知道您在问什么,因为您的示例代码在语法上无效。但是,如果您要问是否将
virtual关键字添加到已经是虚拟的函数(因为它是作为虚拟函数继承的)会改变性能,那么答案是否定的 -virtual关键字在这种情况下根本没有效果. -
如果你设置了一个合理的测试,你实际上可以测量这个。我记得几年前就是这样做的,发现开销不值得担心。也许值得为您的应用程序担心,但我对此表示怀疑。
-
这个问题不应该被关闭。它是具体的,可回答的和主题在这里。
标签: c++ performance virtual