"Какие все вууумные, аж противно." (с)
А вас, челы вопрошающие, не смущает в первую очередь тот факт, что, например, указатель data не инициаллизирован? Те, как правильно заметил
PredatorAlpha, будем освобождать память по адресу "мусор".
разве память, что выделилась объекту, зачищается нулями до вызова любых конструкторов??
В дебагере - да. Всё обнуляется.
Ну и зачем это всё сделано? Дело в том, доргие амигосы и мучачосы, что код в статьях и/или книгах не является 100% рабочим кодом, с логичным исполнением. Он служит исключительно для иллюстрации содержания, в данном случае для демонстрации смысловой идентичности оператора присваивания (в котором освобождение памяти не вызывает вопросов) и конструктора копирования. Пример показывает некие действия, которые можно/необходимо выполнить, чтобы подготовить объект к приёму данных из другого объекта. Конечно, правильно было бы в конструктор добавить сначала инициаллизацию объектов-членов, но это уже, как говорится, будем проходить на следующем уроке.
Ну как-то так. Надеюсь прояснил.