undef писал(а):
мне здесь copy-конструктор и не нужен был, задача ставилась другая
Даже если и другая задача, без конструктора копирования здесь не обойтись. По той причине, что при передаче в функцию "по значению" , как у Вас, автоматически по-умолчанию (т.е. если отсутствует заданный Вами конструктор копирования) создается копия исходного объекта, у которой все поля равны полям исходного объекта (в том числе, и указатели-члены класса). Потом для этого объекта-копии вызывается деструктор(который освобождает память, указываемую указателями-членами
), а поскольку значения указателей-членов класса одинаковы, то во втором (исходном) экземпляре объекта указатели-члены уже будут указывать на уже освобожденную память.. Вот что б этих казусов не происходило, и нужен конструктор копирования, который будет
корректно создавать копии, а не абы как, как это делает C++ по-умолчанию!
Уффф.. Длинно получилось и с тафтологией...