Страницы

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

среда, 17 апреля 2019 г.

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

Имеется три объекта одного класса с перегруженными операциями + и *. Сохранят ли эти операции приоритет или нет? Почему? Например:
rezult = a + b * c.
Где a, b, c - объекты одного класса. Какая будет последовательность выполненных операций и почему?


Ответ

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

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

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