Если вы не переопределите метод virtual
, вызывающий вызов вызовет базовый класс.Это своего рода смысл использования наследования, IMO.
Если вы не хотите, чтобы базовый класс реализовывал виртуальный метод, вы можете объявить его следующим образом:
class Demo {
void foo() = 0;
};
Эточто называется абстрактным классом. Обратите внимание, что вы не можете создать экземпляр такого класса .Любой класс, который наследуется от Demo
, должен реализовывать foo()
, иначе он также будет абстрактным классом и, следовательно, не подлежит проверке.