Язык программирования C++ от Страуструпа

       

Сводка операций


Полное и подробное описание операций языка С++ дано в $$R.7. Советуем прочитать этот раздел. Здесь же приводится краткая сводка операций и несколько примеров. Каждая операция сопровождается одним или несколькими характерными для нее именами и примером ее использования. В этих примерах class_name обозначает имя класса, member - имя члена, object - выражение, задающее объект класса, pointer - выражение, задающее указатель, expr - просто выражение, а lvalue (адрес) - выражение, обозначающее не являющийся константой объект. Обозначение (type) задает имя типа в общем виде (с возможным добавлением *, () и т.д.). Если оно указано без скобок, существуют ограничения.

Порядок применения унарных операций и операций присваивания "справа налево", а всех остальных операций - "слева направо". То есть, a=b=c означает a=(b=c), a+b+c означает (a+b)+c, и *p++ означает *(p++), а не (*p)++.


Операции С++



::

Разрешение области видимости

class_name :: member

::

Глобальное

:: name

.

Выбор члена

object . member

->

Выбор члена

pointer -> member

[]

Индексирование

pointer [ expr ]

()

Вызов функции

expr ( expr_list )

()

Структурное значение

type ( expr_list )

sizeof

Размер объекта

sizeof expr

sizeof

Размер типа

sizeof ( type )

++

Постфиксный инкремент

lvalue ++

++

Префиксный инкремент

++ lvalue

--

Постфиксный декремент

lvalue --

--

Префиксный декремент

-- lvalue

~

Дополнение

~ expr

!

Логическое НЕ

! expr

-

Унарный минус

- expr

+

Унарный плюс

+ expr

&

Взятие адреса

& lvalue

*

Косвенность

* expr

new

Создание (размещение)

new type

delete

Уничтожение (освобождение)

delete pointer

delete[]

Уничтожение массива

delete[] pointer

()

Приведение(преобразование)типа

( type ) expr

. *

Выбор члена косвенный

object . pointer-to-member

->*

Выбор члена косвенный

pointer -> pointer-to-member

*

Умножение

expr * expr

/

Деление

expr / expr

%

Остаток  от деления

expr % expr

+

Сложение (плюс)

expr + expr

-

Вычитание (минус)

expr - expr

<<

Сложение (плюс) Сдвиг влево

expr << expr

>> 

Сдвиг вправо

expr >> expr

Меньше

expr < expr

<=

Меньше или равно

expr <= expr

Больше

expr > expr

>=

Больше или равно

expr >= expr

==

Равно

expr == expr

!=

Не равно

expr != expr

&

Поразрядное И

expr & expr

^

Поразрядное исключающее ИЛИ

expr ^ expr

|

Поразрядное включающее ИЛИ

expr | expr

&&

Логическое И

expr && expr

||

Логическое ИЛИ

expr || expr

? :

Операция условия

expr? expr : expr

=

Простое присваивание

lvalue = expr

*=

Присваивание с умножением

lvalue *= expr

/=

Присваивание с делением

lvalue /= expr

%=

Присваивание с взятием остатка от деления

lvalue %= expr

+=

Присваивание со сложением

lvalue += expr

-=

Присваивание с вычитанием

lvalue -= expr

<<=

Присваивание со сдвигом влево

lvalue <<= expr

>>=

Присваивание со сдвигом вправо

lvalue >>= expr

&=

Присваивание с поразрядным И

lvalue &= expr

|=

Присваивание с поразрядным включающим ИЛИ

lvalue |= expr

^=

Присваивание с поразрядным исключающим ИЛИ

lvalue ^= expr

,

Запятая (последовательность)

expr , expr

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




Содержание раздела