Derived::callback
неявно virtual
, потому что функция Base::callback
с тем же типом и параметрами возврата объявлена как virtual
.
При этом, будет ли использоваться vtable, зависит откомпилятор и какие оптимизации он выполняет.Поскольку здесь компилятор может знать, что obj
указывает на объект Derived
, он знает, каков окончательный переопределитель для виртуальной функции callback
, поэтому он мог бы потенциально сделать вызов, не просматривая функцию в vtable.Хотя это зависит от компилятора и настроек оптимизации.