Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть 2 варианта переопределения операции "+" в классе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Правильно ли я понимаю, что во втором случае переопределяется операция "+=", а не "+"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 12:48 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Если это напечатает 12, то ты прав. Если на выходе будет что-то другое, то не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:10 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
White OwlЕсли это напечатает 12, то ты прав. Если на выходе будет что-то другое, то не прав. Спасибо, но не понял :). Два одинаковых оператора не получится в классе перегрузить, так как они отличаются только возвращаемым значением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 21:47 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
MaximuS_GWhite OwlЕсли это напечатает 12, то ты прав. Если на выходе будет что-то другое, то не прав. Спасибо, но не понял :). Два одинаковых оператора не получится в классе перегрузить, так как они отличаются только возвращаемым значением.Значит "не прав". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 01:11 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
White OwlЗначит "не прав". А что я упускаю тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 11:47 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
MaximuS_GWhite OwlЗначит "не прав". А что я упускаю тогда?Смысл. Давай вернемся в первый день изучения С++. a = a+b - сложить a и b и поместить результат в а . Все просто и легко. a += b - взять значение a , прибавить к нему b и положить результат обратно в a . То есть эта запись должна по смыслу быть одинаковой с первой записью. Так? А теперь вопрос на засыпку: Если ты хочешь написать две разные функции для обработки + и += означает ли это что ты хочешь a=a+b и a+=b работать по разному и в итоге выдавать два разных результата? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2013, 06:31 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
А теперь вопрос на засыпку: Если ты хочешь написать две разные функции для обработки + и += означает ли это что ты хочешь a=a+b и a+=b работать по разному и в итоге выдавать два разных результата? Я думаю да. Просто создал я эту тему, потому что мне здесь сказали, что если я возвращаю из перегруженного оператора "+" один из объектов, а не новый объект, то я произвожу операцию "+=", а не "+". Именно это я и пытаюсь понять. Именно этим и отличаются два варианта перегрузки оператора "+", приведенные в первом посте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2013, 22:35 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
Может имелось ввиду не что возвращать, а что изменять? То есть вот эта строчка определяет операцию: Код: plaintext 1. изменяю новый объект, объекты учавствующие в операции, не изменяются - операция "по смыслу" представляет собой операцию "+" Код: plaintext 1. изменяю левый объект, учавствующий в операции - операция "по смыслу" представляет собой операцию "+=" для левого объекта. Может так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2013, 22:40 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
MaximuS_Gизменяю новый объект, объекты учавствующие в операции, не изменяются - операция "по смыслу" представляет собой операцию "+" изменяю левый объект, учавствующий в операции - операция "по смыслу" представляет собой операцию "+=" для левого объекта. Может так?ну на конец то ))) для полного понимания обрати внимание, что Код: plaintext 1. можно переписать вот так: Код: plaintext 1. и всё сразу становится на свои места )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 01:07 |
|
||
|
переопределенее операций "+" и "+="
|
|||
|---|---|---|---|
|
#18+
MaximuS_GА теперь вопрос на засыпку: Если ты хочешь написать две разные функции для обработки + и += означает ли это что ты хочешь a=a+b и a+=b работать по разному и в итоге выдавать два разных результата? Я думаю да. Просто создал я эту тему, потому что мне здесь сказали, что если я возвращаю из перегруженного оператора "+" один из объектов, а не новый объект, то я произвожу операцию "+=", а не "+". Именно это я и пытаюсь понять. Именно этим и отличаются два варианта перегрузки оператора "+", приведенные в первом посте. Блин, ну неужели так сложно понять, с++ же не криптография какая-то, если ты определишь operator +, это будет перегружена операция +, если ты определишь operator += , это будет перегружена операция += . Это что, очень сложно понять? В той теме тебе говорили, что семантически получался как бы += из +, и как бы намекали, что это неправильно, именно потому, что семантика у + другая должна быть. Но если тебе именно это надо, ты имееш возможность так сделать. Просто не очень хорошо всех и себя обманывать, выдумывая новые семантики для старых операций. Оно конечно, семантика операции зависит от типа данных, и может быть любой, но без надобности принято не нарушать стандартную семантику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 01:47 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38116259&tid=2020502]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 182ms |

| 0 / 0 |
