Здравствуйте, RussianFellow, Вы писали:
RF>Чем отличается конструктор копирования от перегрузки оператора = (перегрузки оператора равно)?
Разной ситуацией вызовов.
Конструктор (как можно понять из названия) вызывается для объекта один раз, при его, объекта, создании.
Оператор присваивания может быть вызван для объекта любое число раз.
Конструктор, как и все другие конструкторы, ничего сам не возвращает.
Оператор присваивания обязан вернуть ссылку на присвоенный объект для возможного дальнейшего присваивания.
Re: Чем отличается конструктор копирования от перегрузки оператора = ?
Здравствуйте, RussianFellow, Вы писали:
RF>Чем отличается конструктор копирования от перегрузки оператора = (перегрузки оператора равно)?
конструктор копирования конструирует объект. То есть до его вызова объекта ещё не существовало и никакие действия по очистке не требуются.
Оператор присваивания вызывается тогда, когда объект уже создан. Следовательно надо вызвать сперва очистку.
class A
{
private:
int* pointer;
public:
A(int value) {pointer = new int(value); }
~A(){ delete pointer; }
A(const A& a)
{ pointer = new int(*a.pointer); }
A& operator=(const A& a)
{ if(this != &a) { delete pointer; pointer = new int(*a.pointer); } return *this; }
};
int main()
{
A a1(1);
A a2(a1); // конструктор копирования
a2 = a2; // оператор присваивания того же самого объекта
a2 = A(2); // оператор присваивания
return 0;
}
Re[2]: Чем отличается конструктор копирования от перегрузки оператора = ?
Здравствуйте, B0FEE664, Вы писали:
D>>Оператор присваивания обязан вернуть ссылку на присвоенный объект для возможного дальнейшего присваивания. BFE>Оператор присваивания обязан вернуть ссылку? Откуда это следует?
Вроде не обязан, т.е., не вернуть ссылку не будет ошибкой компиляции.
Здравствуйте, RussianFellow, Вы писали:
RF>Чем отличается конструктор копирования от перегрузки оператора = (перегрузки оператора равно)?
Ты концепутальном смысле ищешь различия или контекстуальном?
Sic luceat lux!
Re[2]: Чем отличается конструктор копирования от перегрузки оператора = ?
Здравствуйте, Kernan, Вы писали:
K>Здравствуйте, RussianFellow, Вы писали:
RF>>Чем отличается конструктор копирования от перегрузки оператора = (перегрузки оператора равно)? K>Ты концепутальном смысле ищешь различия или контекстуальном?
И в том, и в другом смысле.
1613 г. = 2024 г.
Re[3]: Чем отличается конструктор копирования от перегрузки оператора = ?
Здравствуйте, RussianFellow, Вы писали:
RF>Здравствуйте, Kernan, Вы писали:
K>>Здравствуйте, RussianFellow, Вы писали:
RF>>>Чем отличается конструктор копирования от перегрузки оператора = (перегрузки оператора равно)? K>>Ты концепутальном смысле ищешь различия или контекстуальном?
RF>И в том, и в другом смысле.
К концепутальном — ничем, в контекстуальм — Даир объяснил.
Sic luceat lux!
Re: Чем отличается конструктор копирования от перегрузки оператора = ?
Пишут, что если перегрузил конструктор копирования, то надо перегружать присваивание и при том особым православным методом. Shoot in the leg как он есть.
Re[2]: Чем отличается конструктор копирования от перегрузки оператора = ?
Здравствуйте, Тёмчик, Вы писали:
Тё>Пишут, что если перегрузил конструктор копирования, то надо перегружать присваивание и при том особым православным методом. Shoot in the leg как он есть.
Просьба не оскорблять мою религию.
1613 г. = 2024 г.
Re: Чем отличается конструктор копирования от перегрузки оператора = ?
Здравствуйте, RussianFellow, Вы писали:
RF>Чем отличается конструктор копирования от перегрузки оператора = (перегрузки оператора равно)?
Один конструктор, другой -- оператор. семантика разная. операции разные.
Одинаково только то, что оба копируют содержимое объекта из одного объекта в другой.
Но даже это (семантика этого копирования) может быть разным.
Re[3]: Чем отличается конструктор копирования от перегрузки оператора = ?
Здравствуйте, RussianFellow, Вы писали:
Тё>>Пишут, что если перегрузил конструктор копирования, то надо перегружать присваивание и при том особым православным методом. Shoot in the leg как он есть.
RF>Просьба не оскорблять мою религию.
Наоборот же. Используется как синоним чего-то особенно правильного и единственно верного. А в данном случае — как последнего шанса (в противном случае — пистолет уже заряжен и приближается к ноге, молись и кайся).