Форум программистов, компьютерный форум CyberForum.ru

Переопределение операции присваивания - C++

Восстановить пароль Регистрация
 
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
13.10.2012, 02:23     Переопределение операции присваивания #1
В случае, когда в классе есть члены, память под которые выделяется динамически, операцию присваивания, как и конструкторы с деструкторами надо переопределять, это понятно.
Вопрос в следующем: почему во всех примерах, которые я видел, возвращаемое значение - не const, т.е. если, например, есть класс example, перегрузка присваивания будет иметь такой прототип:
example & operator=(const example & f);

а не такой

const example & operator=(const example & f);

Ведь можно, например, сделать такую вещь, что нехорошо:

C++
1
2
example a,b;
(a=b).SomeMethod();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
13.10.2012, 02:30     Переопределение операции присваивания #2
Потому что то же самое можно делать и со встроенными типами. Вы ведь можете написать так:
C++
1
2
int a, b, c;
a = b = c = 0;
Хотя это зависит от класса и его назначения, такое можно позволить для математических классов, вроде комплексных чисел.
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
13.10.2012, 02:47  [ТС]     Переопределение операции присваивания #3
Видимо, вы не поняли, что я имел в виду. Зачем нужно возвращаемое значение вообще - понятно, чтобы строить цепочки присваиваний.
Непонятно, почему оно не const?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
13.10.2012, 02:57     Переопределение операции присваивания #4
NegativeCreep, так я же написал, потому что это возможно для встроенных типов, можно так же писать:
C++
1
( a = b ) = c = 0;
И опять же повторюсь - зависит от класса, и его цели.
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
13.10.2012, 03:08  [ТС]     Переопределение операции присваивания #5
Теперь ясно, спасибо, затупил сначала)
Yandex
Объявления
13.10.2012, 03:08     Переопределение операции присваивания
Ответ Создать тему
Опции темы

Текущее время: 01:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru