| 3.2.1 Круглые скобки
|
| 3.2.2 Порядок вычисления
|
| 3.2.3 Увеличение и уменьшение *5
|
| 3.2.4 Побитовые логические операции
|
| 3.2.5 Преобразование типа
|
| 3.2.6 Свободная память
|
Операции C++ подробно и систематически описываются в #с.7; прочитайте, пожалуйста, этот раздел. Здесь же приводится краткая сводка и некоторые примеры. После каждой операции приведено одно или более ее общеупотребительных названий и пример ее использования. В этих примерах имя_класса - это имя класса, член - имя члена, объект - выражение, дающее в результате объект класса, указатель - выражение, дающее в результате указатель, выр - выражение, а lvalue - выражение, денотирующее неконстантный объект. Тип может быть совершенно произвольным именем типа (со *, () и т.п.) только когда он стоит в скобках, во всех остальных случаях существуют ограничения.
Унарные операции и операции присваивания правоассоциативны, все остальные левоассоциативны. Это значит, что a=b=c означает a=(b=c), a+b+c означает (a+b)+c, и *p++ означает *(p++), а не (*p)++.
Сводка Операций (часть 1)
:: разрешение области видимости имя_класса:: член:: глобальное:: имя
->
| выбор члена
| указатель->член
|
[]
| индексация
| указатель [ выр ]
|
()
| вызов функции
| выр (список_выр)
|
()
| построение значения
| тип (список_выр)
|
sizeof
| размер объекта
| sizeof выр
|
sizeof
| размер типа
| sizeof (тип)
|
++
| приращение после
| lvalue++
|
++
| приращение до
| ++lvalue
|
--
| уменьшение после
| lvalue--
|
--
| уменьшение до
| --lvalue
|
~
| дополнение
| ~ выр
|
!
| не
| ! выр
|
-
| унарный минус
| - выр
|
+
| унарный плюс
| + выр
|
&
| адрес объекта
| & lvalue
|
*
| разыменование
| * выр
|
new
| создание (размещение)
| new тип
|
delete
| уничтожение (освобождение)
| delete указатель
|
delete[]
| уничтожение вектора
| delete[ выр ] указатель
|
()
| приведение (преобразование типа)
| (тип) выр
|
*
| умножение
| выр * выр
|
/
| деление
| выр / выр
|
%
| взятие по модулю (остаток)
| выр % выр
|
+
| сложение (плюс)
| выр + выр
|
-
| вычитание (минус)
| выр - выр
|
В каждой отчерченной части находятся операции с одинаковым приоритетом. Операция имеет приоритет больше, чем операции из частей, расположенных ниже. Например: a+b*c означает a+(b*c), так как * имеет приоритет выше, чем +, а a+b-c означает (a+b)-c, поскольку + и - имеют одинаковый приоритет (и поскольку + левоассоциативен).