Russian Qt Forum

Программирование => С/C++ => Тема начата: horror812 от Март 25, 2011, 22:04



Название: [решено] Метод для копирования элемента класса
Отправлено: horror812 от Март 25, 2011, 22:04
Всем привет.
У меня простой вопрос)
как правильно методом класса копировать объект.
Код:
class A
{...
   A(const A &a) // конструктор копирования
   A copy()  // метод
  { ...
    return A(*this);
  }
};

A a;
A b = a.copy();

Я это к чему спрашиваю, в сиПП  у меня не много опыта,
но во всех исходниках, которые я покапал.
обычно копирует так
Код:
A  A::copy() const {    return A(*this);}

A b(a.copy())


или через указатель
Код:
A*  A::copy() {    return new A(*this);}

A *b = a.copy()

Мой первоначальный вариант
я нигде не встретил.
Он  правильный?
Спасибо.





Название: Re: Метод для копирования элемента класса
Отправлено: brankovic от Март 25, 2011, 22:49
Он  правильный?

более-менее


Название: Re: Метод для копирования элемента класса
Отправлено: Igors от Март 25, 2011, 23:19
Не видно чем Ваш способ отличается от исходников. А вообще это довольно борзо - возвращать объект по значению. В Qt это может быть безболезненно, в др местах - нет. И в чем смысл метода если он только повторяет конструктор копирования или оператор присваивания? Если нужно что-то специальное, лучше напр так

Код
C++ (Qt)
void ClassA::CopyBuffer( ClassA & dest )
{
 ...
}
 


Название: Re: Метод для копирования элемента класса
Отправлено: horror812 от Март 26, 2011, 00:03
Спасибо.
Ок, буду писать как у вас)

он у меня не только повторяет, просто для примера показал коротко.
Мне это нужно к примеру
Код:
class A
{
...
  float *array; 
  void abs(); // убираем знак по всему массиву
  A copyAbs() // получить новый элемент с массивом  +знач...
  {
     A c(*this);
     c.abs();
     return c;
  }
}

Спасибо