如果有虚拟方法,是否会创建vtable?

BЈо*_*вић 2 c++ vtable

如果我创建一个非常简单的类,如下所示:

class A
{
  public :
    virtual void foo()
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

(没有虚拟析构函数)是编译器要创建vtable吗?或者现代编译器是否足够聪明以识别这种情况(可能是一个糟糕的复制和粘贴)而不是为这些类添加虚拟表?

Ben*_*igt 5

v表是一个实现细节.将v表用于虚函数的编译器将为此类创建一个.那些没有,不会.