相关疑难解决方法(0)

虚拟函数本质上应该有一个定义吗?

是否必须为虚函数定义?

请考虑以下示例程序:

#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,则链接错误不再存在.为什么是这样?什么实例化与上述链接错误有关?

c++ virtual-functions undefined-reference

7
推荐指数
2
解决办法
4566
查看次数