Справочные данные по языку C++ 649

Операция I Ассоциативность

о п -> ••••	слева направо
~ + — ++ — & * sizeof new delete	справа налево
.* -> *	слева направо
* / %	слева направо
+ -	слева направо
« »	слева направо
< <= > >=	слева направо
i i	слева направо
&	слева направо 1
-	слева направо
	слева направо
&&	слева направо
11	справа налево
1?=	слева направо
= *= /= %= += -= &= "= |= «= »=	справа налево
»	слева направо

Например, выражение а + Ь * с / d будет выполняться как а + ((Ь * с) / d). Сна-
чала выполнятся операции умножения и деления, имеющие более высокий прио-
ритет, чем операция сложения. Поскольку ассоциативность операций умножения
и деления слева направо, то прежде всего будет выполнено умножения Ь * с, а за-
тем результат разделится на с. В заключение результат этого деления прибавится
к а.

Вы можете легко изменять последовательность действий, применяя скобки,
которые имеют очень высокий приоритет.

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

Все операции C++ могут быть перегружены, кроме операций точка (.), разы-
менование (*), разрешение области действия (::), условная (?:) и sizeof.

Операции =,[],() и -> могут быть перегружены только как нестатические
элементы-функции. Они не могут быть перегружены для перечислимых типов.

Все остальные операции можно перегружать, чтобы применить их к каким-то
новым типам объектов, вводимым пользователем. Кроме того многие операции
уже перегружены в C++. Например, арифметические операции применяются к
разным типам данных — целым числам, действительным и т.д., именно в резуль-
тате того, что они перегружены.

Операции перегружаются путем составления описания функции (с заголовком
и телом), как это делается для любых функций, за исключением того, что в этом
случае имя функции состоит из ключевого слова operator, после которого записы-
вается перегружаемая операция. Например, имя функции operator+ можно испо-
льзовать для перегрузки операции сложения.                        *

Чтобы использовать операцию над объектами классов, эта операция должна
быть перегружена, но есть два исключения. Операция присваивания (=) может
быть использована с каждым классом без явной перегрузки. По умолчанию опера-