Можно ли вызвать конструктор прародителя в обход конструктора родителя?
Предполагается, что конструктор предназначен для инициализации полей класса, например, тех, которые являются динамическими объектами. В таком случае, получается странная вещь, поле (в родителе) у нас есть, а код его инициализации не вызывается. Это неверно.

Бизнес-логику в конструктор помещать не стоит, функция «КупитьСобаку» должна быть вынесена из конструктора в специально предназначенное для этого место. Таким образом, проблема решится сама собой.
Нельзя ли обойтись агрегацией вместо наследования?