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