Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Немного поправлю: 29.11.01 12:35 Число просмотров: 1027
Автор: Biasha <Бяша> Статус: Member Отредактировано 29.11.01 12:51 Количество правок: 3
|
Бывает явно заданный конструктор копирования, и конструктор копирования класса по умолчанию.
Конструктор копирования у класса есть всегда. Например, он вызывается дважды при вызывове функции типа CName func(CName name);.
К.к. по умолчанию - просто копирует все по очереди переменные-члены.
Чтобы не копировать об'єкт лишний раз, его передают по ссылке, как я и сделал (catch (ce &e)).
Так вот. Когда конструктор копирования задан явно - всё отлично, а когда явно он не задан (а значит при необходимости будет использован к.к. по умолчанию), то происходит копирование об'єкта куда-то. Само собою мы не видим на экране его вызова, так как в к.к по умолчанию нет вывода на экран текста, в отличие от нашего; мы можем понять, что он был вызван, только анализируя порядок вызова конструкторов/деструкторов, адреса об'єктов и содержимое переменных - всё указывает на наличие его вызова.
Вот и не понятно: чего это вдруг передаваемый по ссылке об'єкт понадобилось копировать. И почему этого не нужно делать при явно заданном к.к.
Да, было бы очень интересно другим компилятором попробовать. У меня нету тоже :(
|
|
|