未定义的引用vtable;虚函数问题

时间:2014-04-23 14:12:54

标签: c++ compiler-construction vtable

假设我使用声明覆盖子类中的虚函数,并且不提供该方法的定义。例如:

class Base
{
    virtual void f() = 0;
}
class Derived : public Base
{
    void f();
}

(我没有给出f的定义)。如果我现在使用类Derived - 是否有可能出现编译器错误,例如“对vtable的未定义引用...”?

1 个答案:

答案 0 :(得分:0)

不适用于f。您已明确表示该函数不具有实现,这意味着派生类必须实现它。

但是,如果声明纯虚拟析构函数(例如virtual ~Base()= 0),则必须在某处提供定义。在这种情况下,如果你不这样做,你将获得对vtable的未定义引用......"错误。