Re[6]: Присвоение свойств и вызов виртуального метода из конструктора
От: sharez  
Дата: 15.11.16 13:51
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Вы рассуждаете с той точки зрения, что вызывая n предконструкторов у нас будет n объектов. В реальности child и parent явл. собой один объект (область в памяти). Т.е. конструктор child не заменяет, а расширяет parent конструктор. Без parent конструктора говорить о child смысла нет. Поэтому пляски вокруг базовых конструкторов.


Нет, отчего же, конструктор Parent выделяет память под instance.parent_field_x, instance.parent_field_y, потом Child выделяет память под instance.child_field_z.
Вызываем по цепочке предконструкторы и предварительно выделяем память для всего объекта целиком, чтобы Child мог его использовать.
Точно так же, кстати, можно автоматически подчищать память в деструкторе, которые теперь не обязан быть виртуальным (как в С++), а вот постдеструкторы будут виртуальными всегда.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.