![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Arden |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 23.1.2009 Где: Украина, Волынь Репутация: нет Всего: нет |
Почему при использовании операции a + b, значение a изменяется? Ведь по сути оператор + у меня не меняет this, а лишь возвращает объект. Создается копия this, на этой копии используется описанный ранее оператор +=, и эта же копия возвращается в программу:
Каким вообще боком тогда изменяется this? Кстати, если сделать вот так:
то а при этом вообще получает рандомные значения. Просветите неуча, пожалуйста. Честно, очень старался сам найти ошибку... неосилил ![]() ![]() Это сообщение отредактировал(а) Arden - 23.6.2009, 09:49 |
||||||
|
|||||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
объявите в классе operator+ как friend.
и копирующий конструктор определите. тогда сможете написать так:
Это сообщение отредактировал(а) zim22 - 23.6.2009, 09:55 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Arden,
Проблема в том, что тут вызывается не оператор присваивания а копирующий конструктор. Вы его не писали - следовательно компилятор сгенерирует его сам. (подробнее см. тут) У вас там есть указательм, компилятор генерирует копирующий конструктор не зная об этом, следовательно он просто скопирует указатель и у вас будет два обьекта ссылающихся на одну и ту же область памяти.
добавьте вот это (вроде правильно, но стоит проверить, писал тут), должно полегчать ![]() Это сообщение отредактировал(а) azesmcar - 23.6.2009, 10:04 |
|||
|
||||
Arden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 23.1.2009 Где: Украина, Волынь Репутация: нет Всего: нет |
azesmcar, спасибо большое.
Вопрос решен. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |