int*_*jay 16

首先,vtables的使用是实现定义的,并非标准强制要求.

对于使用vtable的实现,答案是:通常是.您可能认为抽象类不需要vtable,因为派生类将具有自己的vtable,但在构造期间需要它:在构造基类时,它将vtable指针设置为其自己的vtable.稍后当输入派生类构造函数时,它将使用自己的vtable代替.

也就是说,在某些情况下,这是不需要的,并且vtable可以被优化掉.例如,MS Visual C++提供了__declspec(novtable)禁用纯接口类上的vtable生成的标志.