Язык C++ включает все операторы C и еще несколько новых операторов. Операторы определяют, какое вычисление следует выполнить с одним или несколькими операндами.
Очередность и ассоциативность
Приоритет оператора определяет порядок операций в выражениях, содержащих несколько операторов. Ассоциативность оператора указывает, в выражении, которое содержит несколько операторов с одинаковым приоритетом, операнд сгруппирован с одним слева или одним справа.
Альтернативные орфографии
C++ задает альтернативные орфографии для некоторых операторов. В C альтернативные орфографии предоставляются в виде макросов в заголовке <iso646.h> . В C++эти альтернативные варианты являются ключевыми словами, а использование <iso646.h> или эквивалентной <C++ ciso646> не рекомендуется. В Microsoft C++ /permissive-
параметр или /Za
компилятор требуется для включения альтернативных орфографических ошибок.
Приоритет оператора C++ и таблица ассоциативности
В следующей таблице показан приоритет и ассоциативность операторов C++ (в порядке убывания приоритета). Операторы с тем же номером приоритета имеют равный приоритет, если другие связи не заданы явно с помощью круглых скобок.
Описание оператора |
Оператор |
Альтернатива |
Приоритет группы 1 без ассоциативности |
|
|
Разрешение области |
:: |
|
Приоритет группы 2, слева направо ассоциативность |
|
|
Выбор элемента (объект или указатель) |
. или -> |
|
Подстрочный индекс массива |
[] |
|
Вызов функции |
() |
|
Увеличение постфикса |
++ |
|
Декремент postfix |
-- |
|
Имя типа |
typeid |
|
Преобразование типа константы |
const_cast |
|
Динамическое преобразование типов |
dynamic_cast |
|
Повторное преобразование типов |
reinterpret_cast |
|
Преобразование статических типов |
static_cast |
|
Приоритет группы 3, справа налево ассоциативность |
|
|
Размер объекта или типа |
sizeof |
|
Увеличение префикса |
++ |
|
Декремент префикса |
-- |
|
Дополнение одного |
~ |
compl |
Логические не |
! |
not |
Унарное отрицание |
- |
|
Унарный плюс |
+ |
|
Адрес |
& |
|
Косвенность |
* |
|
Создание объекта |
new |
|
Уничтожить объект |
delete |
|
Cast |
() |
|
Приоритет группы 4, слева направо ассоциативность |
|
|
Указатель на член (объекты или указатели) |
.* или ->* |
|
Приоритет группы 5, слева направо ассоциативность |
|
|
Умножение |
* |
|
Деление |
/ |
|
Модуль |
% |
|
Приоритет группы 6, слева направо ассоциативность |
|
|
Сложение |
+ |
|
Вычитание |
- |
|
Приоритет группы 7, слева направо ассоциативность |
|
|
Сдвиг влево |
<< |
|
Сдвиг вправо |
>> |
|
Приоритет группы 8, слева направо ассоциативность |
|
|
Меньше чем |
< |
|
Больше чем |
> |
|
Меньше или равно |
<= |
|
Больше или равно |
>= |
|
Приоритет группы 9, слева направо ассоциативность |
|
|
Равенство |
== |
|
Неравенство |
!= |
not_eq |
Группа 10 приоритет слева направо на ассоциативность |
|
|
Побитовое И |
& |
bitand |
Приоритет группы 11 слева направо |
|
|
Побитовая эксклюзивная OR |
^ |
xor |
Приоритет группы 12 слева направо |
|
|
Битовая инклюзивная ИЛИ |
| |
bitor |
Приоритет группы 13, слева направо ассоциативность |
|
|
Логическое И |
&& |
and |
Приоритет группы 14 слева направо |
|
|
Логическое ИЛИ |
|| |
or |
Приоритет группы 15, справа налево ассоциативность |
|
|
Условный |
? : |
|
Передача прав и обязанностей |
= |
|
Назначение умножения |
*= |
|
Назначение деления |
/= |
|
Назначение модуля |
%= |
|
Добавление назначения |
+= |
|
Назначение вычитания |
-= |
|
Назначение влево |
<<= |
|
Назначение вправо |
>>= |
|
Битовое назначение AND |
&= |
and_eq |
Побитовое инклюзивное назначение OR |
|= |
or_eq |
Побитовое монопольное назначение OR |
^= |
xor_eq |
выражение throw |
throw |
|
Приоритет группы 16 слева направо |
|
|
Comma |
, |
|
См. также
Перегрузка операторов