您能解释一下,编译器是否为具有虚函数的类生成了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/