【发布时间】:2013-10-02 12:12:08
【问题描述】:
在下面的例子中,我会使用动态调度来调用虚函数吗?
struct Base{
virtual double fn(){return 3.2;}
};
struct Deri1 : public Base{
using Base::fn;
}
struct Deri2 : public Base{
virtual double fn(){return 4.6;}
}
我正在实现的类包含更多信息,但有些我想为某些派生类保留默认值,但在其他类中覆盖,上面代码中的 fn() 就是一个例子。基本上,我只是使用基类来避免每次没有被覆盖时重写 fn() 。这是正确的方法吗?
谢谢!
【问题讨论】:
-
Deri2不继承自Base。这是故意的吗? -
糟糕!对不起!我现在已经更正了。
-
在这种情况下,您甚至不需要使用 using 指令。只有当你重载函数时,除了不想重写它。
-
谢谢,但我宁愿避免动态调度,即使用 vtables 来确定虚函数。此外,在扩展程序中,还会发生一些重载。
-
如果你不想动态调度,就不要做函数
virtual。
标签: c++ virtual-functions dynamic-dispatch