您能解释一下,编译器是否为具有虚函数的类生成了vtable,并且没有使用该类(未以任何形式创建的对象)。说前

    class A {
          public:
           virtual void func() { }
    };
    int main()
    {
       return 0;
    }

对于上述程序,编译器是否为类A创建vtable?
这可能是一个重复的问题,但我想知道解决方案。如果重复,请提供源链接。

最佳答案

vtable的概念是一个实现细节,不是C++标准的一部分。当编译器需要一个vtable时,将创建一个。

在您的情况下,永远不会使用该类,并且编译器根本不会生成任何代码。

但是,即使实例化类和具有副作用的函数,如果您从不使用需要vtable的功能,也无需生成该功能。

关于c++ - 编译器是否为未使用的类生成vtable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31430540/

10-12 16:15