是否必须为虚函数定义?
请考虑以下示例程序:
#include <iostream>
using namespace std;
class base
{
public:
void virtual virtualfunc();
};
class derived : public base
{
public:
void virtualfunc()
{
cout << "vf in derived class\n";
}
};
int main()
{
derived d;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这给出了链接错误:
在function
base::base():: undefined引用中vtable for base
我没有基类中虚函数的定义.为什么即使我没有显式调用虚函数,也会发生此错误?
我发现有趣的是,如果我没有实例化类的对象derived,则链接错误不再存在.为什么是这样?什么实例化与上述链接错误有关?