The C ++ standard does not say anything about placing a vtable or even about the existence of a v-table. It just defines the behavior, and the v-table is the easiest implementation, so it is widely used.
Practically speaking, one reason for the existence of a v-table for an abstract class is used to build and destroy when the dynamic type of an object is an abstract class.
In a class with only pure virtual functions, there are clearly no constructors (since constructors cannot be virtual). However, destructors can certainly be virtual.
Your class can still have a pure virtual destructor with an implementation, and then a v-table (or equivalent implementation details) is required.
But implementations of pure virtual functions are rare and will not be executed when defining an interface.
source share