Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > различия конструктора копирования


Автор: Sleepman 3.7.2005, 22:06
народ, объясните (подскажите).. в чем принципиальная разница по поводу САБЖа??

Автор: sergejzr 3.7.2005, 22:10
= копирует значения полей, а конструктор копирования создаёт новый обьект - клон.

Автор: Sleepman 3.7.2005, 22:21
понял... т.е. если мы пишем
Код

L *p = new L(список_параметров); //L - ранее определенный класс

то будет обязательно вызван констр-р копирования, даже если операция присваивания перегружена, да?
а не так, скажем, что... вызывается конструктор для безымянного объекта, а потом его поля и методы копируются при помощи "="... ??

Автор: Дрон 3.7.2005, 22:35
Sleepman
Не совсем. В твоём примере вообще идёт работа с указателями и не оператор присваиния, ни констр. копирования не будут вызываться.

Разницу можно ощутить тут:

Код

MyClass obj1(); // создался объект

MyClass obj2 = obj1; // вызвался конструктор копирования для инициализации obj2

MyClass obj3;
obj3 = obj1; // вызвался оператор присваивания


Автор: sergejzr 3.7.2005, 22:36
В твоём коде создаётся обьект и р присваивается значение его адреса.
То есть р поакзывает на свежесозданный обьект. Здесь не срабатывает ни оператор = , ни конс. копирования.

Автор: Sleepman 3.7.2005, 22:38
с указателем тупанул... smile
с констр. и = разобрался... спасибо....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)