Re[4]: оператор копирования
От: _Winnie Россия C++.freerun
Дата: 07.09.05 20:32
Оценка:
Подытожу.

Трюк с
this->~X();
return *(new (this) X(x));


плох тем, что не работатает если конструктор копирования бросит исключение. Также он не работает, если кто-то унаследован от X и деструктор виртуальный. Вот тут будет весело ^_^.

и этот трюк, и трюк со swap плох, тем, что assigment может быть выполнен эффективней cctor, так как не делает освобождение и выделение, скажем памяти.

Кто может сказать что-то плохое про

X::X( X const & x )
{
  // ... default init
  operator =(x);
}

?
За исключением, возможно, дешевых лишних действий.
Правильно работающая программа — просто частный случай Undefined Behavior
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.