Предполагается, что конструктор предназначен для инициализации полей класса, например, тех, которые являются динамическими объектами. В таком случае, получается странная вещь, поле (в родителе) у нас есть, а код его инициализации не вызывается. Это неверно.
Бизнес-логику в конструктор помещать не стоит, функция «КупитьСобаку» должна быть вынесена из конструктора в специально предназначенное для этого место. Таким образом, проблема решится сама собой.