crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в задачка № 7
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
archimed7592 Дата 13.4.2008, 13:38
 
Цитата
В данном случае, я думаю, как раз подразумевается обязательная перегрузка оператора =.

А чем сгенерённый компилятором оператор здесь не подходит? Разве что только тем, что он открыт...

Цитата
Потому для реализации функции копирования (клонирования) и создается сначала просто объект класса, потом перегруженным присваиванием в него копируются изначальный объект.

Вообще говоря классики рекомендуют делать это так:
T *T::clone() const
{
    return new T(*this);
}
Т.е. посредством конструктора копирование, ибо это есть труъ ;).
Novak Дата 13.4.2008, 12:40
  В данном случае, я думаю, как раз подразумевается обязательная перегрузка оператора =.
Потому для реализации функции копирования (клонирования) и создается сначала просто объект класса, потом перегруженным присваиванием в него копируются изначальный объект. Потому, да
Цитата
this позволит данные текущего экземпляра скопировать
archimed7592 Дата 13.4.2008, 0:26
  Смотри:
int a = 5;
int b;
int *pA = &a;
int *pB = &b;
*pB = *pA;

Здесь pB играет роль указателя на вновь созданый объект, а pA - на изначальный.
Остальное - обыкновенное присваивание(либо сгенерённое компилятором, либо написаный автором класс operator =).
Litkevich Yuriy Дата 12.4.2008, 18:48
  Наткнулся в Qt'явых примерах на такой код:
QTableWidgetItem *SpreadSheetItem::clone() const
{
    SpreadSheetItem *item = new SpreadSheetItem();
    *item = *this;
    return item;
}

смысл строчки ( *item = *this; ) непойму,
ведь экземпляр уже создан, и именно этого класса ( SpreadSheetItem *item = new SpreadSheetItem(); )

this позволит данные текущего экземпляра скопировать?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 1:55