Re: оператор копирования
От: Bashik Украина  
Дата: 07.09.05 14:50
Оценка:
Здравствуйте, 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 не всегда можно нормально реализовать, поэтому этот способ имеет право на существование.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.