假设我使用声明覆盖子类中的虚函数,并且不提供该方法的定义。例如:
class Base
{
virtual void f() = 0;
}
class Derived : public Base
{
void f();
}
(我没有给出f
的定义)。如果我现在使用类Derived
- 是否有可能出现编译器错误,例如“对vtable的未定义引用...”?
答案 0 :(得分:0)
不适用于f
。您已明确表示该函数不具有实现,这意味着派生类必须实现它。
但是,如果声明纯虚拟析构函数(例如virtual ~Base()= 0
),则必须在某处提供定义。在这种情况下,如果你不这样做,你将获得对vtable的未定义引用......"错误。