1 | |||||||||||
Перегрузка операции инкремента05.08.2012, 13:31. Показов 1844. Ответов 6
Метки нет (Все метки)
Как известно, постинкремент возвращает r-value, а преинкремент - l-value. То есть:
0
|
05.08.2012, 13:31 | |
Ответы с готовыми решениями:
6
Перегрузка постфиксной и префиксной операции инкремента Перегрузка инкремента Перегрузка инкремента ++ Перегрузка операторов инкремента |
Каратель
|
||||||
05.08.2012, 13:52 | 2 | |||||
сделать его внешним, не мембером класса(ну или френдом)
1
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
05.08.2012, 14:06 | 3 |
А ничего, что (++x)++, ++(++x) и т. п. это, по идее, undefined behavior (для чисел; для объектов всё окей)?
1
|
05.08.2012, 14:16 [ТС] | 4 |
Jupiter, спасибо. У вас там правда ошибка из-за отсутствия точки с запятой была)
Подскажите, если не затруднит, почему глобальное объявление решило проблему? Как я понимаю, временный объект, возвращённый a++, не может быть преобразован в ссылку и передан в operator++(int)? Или я не прав?
0
|
Каратель
|
||||||
05.08.2012, 14:22 | 5 | |||||
Schizorb, cм. комментарии main
1
|
05.08.2012, 14:34 [ТС] | 6 |
Ну да, это я значит понял.
Хм... а почему тут UB? Разве не вычислится сначала выражение в скобках, вернёт l-value, которое потом ещё раз инкрементируется?
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
05.08.2012, 15:17 | 7 |
Да то я криво прочитал стандарт, всё окей.
1
|
05.08.2012, 15:17 | |
05.08.2012, 15:17 | |
Помогаю со студенческими работами здесь
7
перегрузка оператора инкремента Перегрузка постфиксного инкремента Перегрузка префиксного инкремента Переопределение операции инкремента Перегрузка префиксного оператора инкремента с возвращающим значением Перегрузка оператора инкремента/декремента через friend Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |