0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 49
|
|
1 | |
Почему при перегрузке оператора присваивания, возвращаемое значение не константно?14.12.2016, 22:59. Показов 1170. Ответов 7
Метки нет (Все метки)
Почему при перегрузке оператора присваивания, возвращаемое значение - someClass & operator=(const someClass& rhl), а не const someClass & operator=(const someClass& rhl)? В чем разница?
0
|
14.12.2016, 22:59 | |
Ответы с готовыми решениями:
7
От каких ошибок страхует Const при перегрузке оператора присваивания Уточняющий вопрос: почему при перегрузке оператора [] необходимо возвращать ссылку? Избыточное копирование объекта при реализации оператора умножения и оператора присваивания Предупреждение при перегрузке оператора |
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
15.12.2016, 02:41 | 2 | |||||
Сообщение было отмечено Svyatosl@v как решение
Решение
Svyatosl@v, для того, чтобы сохранить семантику встроенного оператора присваивания (сохранять привычную семантику - это хорошо).
В частности, чтобы иметь возможность писать так:
С другой стороны, можно делать другие типы возвращаемого значения, если на то есть реальные, обоснованные причины. В противном случае нужно сохранять семантику по умолчанию.
2
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
15.12.2016, 03:02 | 4 |
Потому что присваивание - это изменение состояния объекта. В общем случае у константного объекта нельзя изменить состояние. Нет, ну мы конечно можем перегрузить константный оператор присваивания, который меняет состояние mutable полям, но что это в итоге получится? (можно на вопрос не отвечать, задай его себе).
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
15.12.2016, 03:07 | 6 | |||||
Да, возможно вопрос родился из-за несовсем корректного примера; Добавь скобки к первому выражению, и станет понятно о чем я говорю:
1
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
15.12.2016, 03:16 | 8 |
0
|
15.12.2016, 03:16 | |
15.12.2016, 03:16 | |
Помогаю со студенческими работами здесь
8
Ошибка при перегрузке оператора >> Ошибки при перегрузке оператора << Ошибка при перегрузке оператора + Ошибка при перегрузке оператора cin >> Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |