Прежде всего, использование vtables определяется реализацией и не предписывается стандартом.
Для реализаций, использующих vtable, ответ: да, обычно. Вы можете подумать, что vtable не требуется для абстрактных классов, потому что производный класс будет иметь свой собственный vtable, но это необходимо во время конструирования: во время создания базового класса он устанавливает указатель vtable на свой собственный vtable. Позже, когда будет введен конструктор производного класса, он будет использовать вместо него свою собственную vtable.
Тем не менее, в некоторых случаях это не нужно, и vtable может быть оптимизирован. Например, MS Visual C ++ предоставляет флаг __declspec(novtable)
для отключения генерации vtable на чистых интерфейсных классах.