Когда мы вызываем base->baseMethod()
, он вызывает Base::baseMethod
, поскольку он не переопределяется на class A
.baseMethod
вызывает функцию method
, так как base
является указателем class A
, она вызывает A::method
, поскольку она переопределена.Хотя этот метод является закрытым, он следует полиморфному поведению.
Когда выполняется delete base
, вызывается первый деструктор производного класса, потому что деструктор Base class
является виртуальным.Производный деструктор класса назовите его собственной method
функцией.Если у нас не было виртуального деструктора, то деструктор производного не был вызван, и, следовательно, вы видели только один from A
в качестве выходного значения из базы
После этого он вызывает деструктор базового класса, и это вызывает method function
из Base class
только потому, что производный класс уже уничтожен.