Передача ссылки или указателя на что-то неинициализированное технически совершенно нормально.
Но причина, по которой вы спрашиваете, вероятно, заключается в том, что вы думаете, что что-то легко может пойти не так, что через некоторую цепочку вызовов можно случайно получить доступ к объекту до его инициализации. И я думаю, что это серьезная проблема. И есть еще одна вещь, которая может пойти не так, а именно то, что код в базовом классе T
теперь может, возможно, сделать недействительным инвариант класса ST
, напрямую изменив член данных ST
instance ...
Итак, я думаю, что это немного рискованно.
Что касается порядка инициализации, C ++ основан на идее построения из частей вверх, в иерархии. Если конструктор выбрасывает, то полностью сконструированные вещи уничтожаются автоматически. Это было бы более сложно или менее эффективно с более произвольным порядком построения.
Приветствия & hth.,