Re[3]: приоритеты перегрженных операций
От: folk Россия  
Дата: 07.07.04 04:08
Оценка: +1
Здравствуйте, romam, Вы писали:

АШ>>У Вас неверно передана семантика постфиксного инкремента. Вот с этой версией Ваши тесты пошли?

АШ>>
АШ>>aa operator ++(const int ab)
АШ>>{
АШ>>    aa temp(*this);
АШ>>    ii++;  
АШ>>    return temp;
АШ>>}
АШ>>

R>С этой версией выражение
R>x=x++;
R>для инта приводит к увеличению х на еденицу, а для перегруженного ++ — нет. Имхо это можно объяснить только тем, что у интового ++ низкий приоритет, выполняется сначала
R>х=х;
R> потом —
R>x++;
R>А у перегруженного ++ — высокий.

Неправильно. Выражение x=x++ для int приводит не к увеличению x на 1, а к неопределенному поведению, поскольку в этом случае происходит одновременная модификация скалярного объекта более одного раза.

R>Проверялось на компиляторе под Linux (g++) и в MSVS 6.0


Ну и что? На других компиляторах или с другими ключами компиляции ты можешь получить иные результаты.
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.