Правильным копированием при наличии в объекте динамического данного будет выделение для создаваемого при копировании объекта нового участка памяти.
|
Данное (*p)
|
Данное (*p)
В этом случае объекты a1 и a2 будут указывать на разные поля. Уничтожение одного из них вызовом деструктора, никак не отразится на существовании другого. Именно это и выполняется в нашем конструкторе копирования.
Еще о конструкторах
Есть еще одинспособ инициализации объекта с помощью списка инициализаторов данных объекта.
Этот список помещается при описании конструктора между списком параметров и телом конструктора:
<имя класса> (список параметров): < список инициализаторов>
{ тело конструктора }
Пример: