1

在下面的例子中,我会使用动态调度来调用虚函数吗?

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() 。这是正确的方法吗?

谢谢!

4

1 回答 1

0

可以通过避免函数定义中的“虚拟”关键字来避免动态分派,只要不使用指针,如此链接中所述。

这给泛型方法和多态性带来了一些复杂性。如果使用动态多态性,则将指向基类的指针传递给方法,在这种情况下,指针必须使用“virtual”关键字来确定要使用的方法。可以使用模板定义静态多态方法,如以下链接中所述。

于 2013-10-02T13:33:20.470 回答