Здравствуйте, гость ( Вход | Регистрация )
|
Litkevich Yuriy |
12.4.2008, 18:48
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Наткнулся в Qt'явых примерах на такой код:
смысл строчки ( *item = *this; ) непойму, ведь экземпляр уже создан, и именно этого класса ( SpreadSheetItem *item = new SpreadSheetItem(); ) this позволит данные текущего экземпляра скопировать? |
|
|
|
![]() |
|
archimed7592 |
13.4.2008, 0:26
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 27.12.2007 Из: Moscow Пользователь №: 56 Спасибо сказали: 0 раз(а) Репутация: 0
|
Смотри:
Здесь pB играет роль указателя на вновь созданый объект, а pA - на изначальный. Остальное - обыкновенное присваивание(либо сгенерённое компилятором, либо написаный автором класс operator =). Сообщение отредактировал archimed7592 - 13.4.2008, 0:29 |
|
|
|
|
Novak |
13.4.2008, 12:40
Сообщение
#3
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 319 Регистрация: 15.3.2008 Из: Замкадыш Пользователь №: 121 Спасибо сказали: 28 раз(а) Репутация: 6
|
В данном случае, я думаю, как раз подразумевается обязательная перегрузка оператора =.
Потому для реализации функции копирования (клонирования) и создается сначала просто объект класса, потом перегруженным присваиванием в него копируются изначальный объект. Потому, да Цитата this позволит данные текущего экземпляра скопировать
|
|
|
|
|
archimed7592 |
13.4.2008, 13:38
Сообщение
#4
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 27.12.2007 Из: Moscow Пользователь №: 56 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата В данном случае, я думаю, как раз подразумевается обязательная перегрузка оператора =. А чем сгенерённый компилятором оператор здесь не подходит? Разве что только тем, что он открыт... Цитата Потому для реализации функции копирования (клонирования) и создается сначала просто объект класса, потом перегруженным присваиванием в него копируются изначальный объект. Вообще говоря классики рекомендуют делать это так: Т.е. посредством конструктора копирование, ибо это есть труъ |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 1.2.2026, 14:06 |