| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > operator |
| Автор: Arden 23.6.2009, 09:47 | ||||||
Почему при использовании операции a + b, значение a изменяется? Ведь по сути оператор + у меня не меняет this, а лишь возвращает объект. Создается копия this, на этой копии используется описанный ранее оператор +=, и эта же копия возвращается в программу:
Каким вообще боком тогда изменяется this? Кстати, если сделать вот так:
то а при этом вообще получает рандомные значения. Просветите неуча, пожалуйста. Честно, очень старался сам найти ошибку... неосилил |
| Автор: zim22 23.6.2009, 09:54 | ||
| объявите в классе operator+ как friend. и копирующий конструктор определите. тогда сможете написать так:
|
| Автор: azesmcar 23.6.2009, 10:03 | ||
| Arden, Проблема в том, что тут вызывается не оператор присваивания а копирующий конструктор. Вы его не писали - следовательно компилятор сгенерирует его сам. (подробнее см. http://forum.vingrad.ru/forum/topic-262056/anchor-entry1887548/0.html) У вас там есть указательм, компилятор генерирует копирующий конструктор не зная об этом, следовательно он просто скопирует указатель и у вас будет два обьекта ссылающихся на одну и ту же область памяти.
добавьте вот это (вроде правильно, но стоит проверить, писал тут), должно полегчать |
| Автор: Arden 2.7.2009, 01:32 |
| azesmcar, спасибо большое. Вопрос решен. |