Здравствуйте, Alexey Chen, Вы писали:
AC>Сегодня рассказывал о реализации оператора копирования через swap, и по ходу в качестве примера привёл вариант как делать НЕ надо.
AC>AC>X& X::operator = ( X const &x )
AC>{
this->>~X();
AC> return *(new (this) X(x));
AC>}
AC>
тут полюбому надо проверка на присваивание самому себе, бывает редко, но бывает.
AC>AC>X::X( X const & x )
AC>{
AC> // ... default init
AC> operator =(x);
AC>}
AC>
а это мне кажется параноя, хотя тут до хрипоты можно спорить, что раньше курица или яйцо.
вобще вариантов масса, можно например функцию CreateFrom сделать, но надо делать правильно, а именно реализовывать оператор присваивания посредством конструктора копирования, вобще говоря swap не всегда можно нормально реализовать, поэтому этот способ имеет право на существование.