Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Перегрузка операций и приоритет

#cpp


Имеется три объекта одного класса с перегруженными операциями + и *. Сохранят ли
эти операции приоритет или нет? Почему? 
Например: 

rezult = a + b * c.


Где a, b, c - объекты одного класса. Какая будет последовательность выполненных операций
и почему?
    


Ответы

Ответ 1



В С и С++ приоритет операций диктуется грамматикой языка и наследуется из грамматики языка. Грамматике языка не интересно, встроенные ли это операторы или перегруженные. Приоритет операций в общем случае не имеет никакого отношения к последовательности выполнения операторов. Но именно для перегруженных операторов такая связь имеется - перегруженные операторы выполняются именно в порядке их приоритета. Если считать, что все операторы в данном выражении перегружены, то сначала будет выполнено умножение b * c, затем сложение a + ..., и затем - присваивание result = ....

Комментариев нет:

Отправить комментарий