![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Вызвать перегруженный оператор присваивания суперкласса. |
|
C/C++ - Вызвать перегруженный оператор присваивания суперкласса.
|
Старожил Сообщения: 192 |
Есть вопрос касающийся кода, который (почти) целиком лежит там.
Как видно, существует класс Becher и подкласс BecherMitAufdruck. В суперклассе я создал перегруженный оператор присваивания. Becher& Becher::operator=(const Becher &b) { if (this != &b) { delete [] inhalt; inhalt = strdupnew(b.inhalt); fassungsvermoegen = b.fassungsvermoegen; fuellgrad = b.fuellgrad; } return *this; } BecherMitAufdruck& BecherMitAufdruck::operator=(const BecherMitAufdruck &b) { if (this != &b) { delete [] inhalt; delete [] aufdruck; inhalt = strdupnew(b.inhalt); aufdruck = strdupnew(b.aufdruck); fassungsvermoegen = b.fassungsvermoegen; fuellgrad = b.fuellgrad; } return *this; } но это не работает. Понятно, что следует как-то определенить пространство имен, например но как это вызвать для объекта *this мне непонятно. |
|
Отправлено: 22:12, 08-02-2012 |
Старожил Сообщения: 198
|
Профиль | Отправить PM | Цитировать Думаю, нормальным решением будет следующее.
Поясню на примере класса Becher. Создаются вспомогательные методы void Becher::_copy(const Becher &b) { inhalt = strdupnew(b.inhalt); fassungsvermoegen = b.fassungsvermoegen; fuellgrad = b.fuellgrad; } void Becher::_destroy() { delete [] inhalt; } Becher& Becher::operator=(const Becher &b) { if (this != &b) { _destroy(); _copy(b); } return *this; } Becher::~Becher() { _destroy(); } Becher::Becher(const Becher &b) { _copy(b); } void BecherMitAufdruck::_copy(const BecherMitAufdruck &b) { Becher::_copy(b); aufdruck = strdupnew(b.aufdruck); } BecherMitAufdruck& BecherMitAufdruck::operator=(const BecherMitAufdruck &b) { if (this != &b) { _destroy(); _copy(b); } return *this; } Надеюсь, мысль ясна. |
Последний раз редактировалось PhilB, 10-02-2012 в 23:41. Отправлено: 20:36, 10-02-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Цитата Smasher:
И вызывается соответствующий метод соответствующего базового класса для объекта this Также можно вызывать все остальные операторы базовых классов |
|
------- Отправлено: 04:01, 14-02-2012 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как оператор округляет проценты | united | Мобильные ОС, смартфоны и планшеты | 11 | 18-02-2008 13:19 | |
[решено] Javascript - Оператор === | hasherfrog | Вебмастеру | 5 | 25-07-2007 14:05 | |
оператор If... Else | Pandora | Вебмастеру | 9 | 29-07-2005 08:43 | |
GPRS + Оператор | kiro | Мобильные ОС, смартфоны и планшеты | 3 | 21-03-2004 21:19 | |
Delphi - Оператор доступа в Delphi | LedWorm | Программирование и базы данных | 6 | 29-02-2004 20:46 |
|