Виртуальная таблица C ++
Я читал много людей, которые писали: «Для класса, в котором объявлена виртуальная функция, существует виртуальная таблица».
Мой вопрос: существует ли vtable только для класса, который имеет виртуальную функцию, или он существует также для классов, производных от этого класса.
например
class Base{
public:
virtual void print(){cout<<"Base Print\n";}
};
class Derived:public Base{
public:
void print(){cout<<"Derived print\n";}
};
//From main.cpp
Base* b = new Derived;
b->print();
Вопрос: Если бы не было vtable для производного класса, тогда вывод не был бы «производным выводом». Таким образом, IMO существует vtable для любого класса, в котором объявлена виртуальная функция, а также для классов, унаследованных от этого класса. Это правильно ?