Класс Child
наследует от Mother
- т. Е. Mother
- это базовый класс из Child
. Поэтому, когда вы создаете экземпляр объекта Child
, также вызывается конструктор Mother
, и это происходит до того, как будет выполнено тело конструктора Child
.
В вашем коде оба * 1014 Конструкторы * и Child
увеличивают элемент данных stati c instance
на один, поэтому после построения child
значение instance
равно двум вместо одного. Чтобы получить желаемое поведение, просто не изменяйте instance
в Child::Child()
:
class Child: public Mother {
public:
Child() { std::cout << "Child constructor" << std::endl; }
};