Punctuation
From cppreference.net
Это знаки пунктуации в C++. Значение каждого символа подробно описано на связанных страницах.
Операторы препроцессора
Операторы препроцессора распознаются препроцессорами .
# (включая % : )
## (включая % : % : )
- Оператор препроцессора для склеивания токенов .
Односимвольные операторы и пунктуаторы
{ и } (включая < % и % > )
- В определении класса , разделяет спецификацию членов .
- В определении перечисления , разделяет список перечислителей.
- Разделяет составной оператор . Составной оператор может быть частью
| (since C++11) |
- Часть синтаксиса aggregate initialization (until C++11) list-initialization (since C++11) для инициализатора .
- В определении пространства имён , разделяет тело пространства имён.
- В спецификации языковой линковки , разделяет объявления.
|
(since C++20) |
[ и ] (включая < : и : > )
- Оператор индексации ; часть operator [ ] в разделе перегрузка операторов .
- Часть декларатора массива в объявлении или type-id (например, в new выражении ).
- Часть оператора new [ ] в разделе перегрузка операторов (функция выделения памяти) .
- Часть оператора delete [ ] в delete выражении и перегрузка операторов (функция освобождения памяти) .
|
(since C++11) |
|
(since C++17) |
|
(since C++26) |
( и )
- В выражении указывает группировку .
- Оператор вызова функции ; часть operator ( ) в перегрузке операторов .
- В функциональном приведении типа разделяет выражение/инициализаторы.
-
В
static_cast,const_cast,reinterpret_castилиdynamic_castразделяет выражение. - Разделяет операнд следующих операторов:
| (начиная с C++11) |
- В выражении размещения new разделяйте аргументы размещения.
- В new выражении опционально разделяйте type-id.
- В new выражении разделяйте инициализаторы.
- В C-style приведении типа разделяйте type-id.
- В объявлении или type-id указывайте группировку.
- Разделяйте список параметров в
-
- объявитель функции function declarator (в declaration или type-id )
|
(начиная с C++11) |
|
(начиная с C++17) |
|
(начиная с C++20) |
- Часть синтаксиса прямой инициализации для инициализатора .
- В объявлении asm , ограничивает строковый литерал.
- В списке инициализации членов , разделяет инициализаторы для базового класса или члена.
- Ограничивает управляющее условие оператора выбора или оператора цикла, включая:
| (начиная с C++11) |
- В обработчике , разделяйте объявление параметра.
- В определении макроса, похожего на функцию , разделяйте параметры макроса.
- В вызове макроса, похожего на функцию , разделяйте аргументы макроса или предотвращайте интерпретацию запятых как разделителей аргументов.
-
Часть
defined,__has_include(since C++17) ,__has_cpp_attribute(since C++20) оператора препроцессора.
|
(since C++11) | ||
|
(since C++14) | ||
|
(since C++17) | ||
|
(since C++20) |
;
- Укажите конец
|
(начиная с C++20) |
- Разделите условие и оператор в for statement .
:
- Часть условного оператора .
- Часть объявления метки .
- В базовом-списке определения класса , вводит базовый класс .
- Часть спецификатора доступа в спецификации членов.
- В объявлении члена битового поля , вводит ширину.
- В определении конструктора , вводит список инициализации членов.
|
(since C++11) |
|
(since C++17) |
|
(since C++20) |
?
- Часть условного оператора .
.
|
(начиная с C++20) |
~ (включая compl )
- Унарный оператор дополнения (также известный как побитовый оператор НЕ) ; часть operator~ в перегрузке операторов .
- Часть выражения идентификатора для именования деструктора или псевдодеструктора.
! (включая not )
- Логический оператор НЕ ; часть operator ! в разделе перегрузка операторов .
|
(начиная с C++23) |
+
- Унарный оператор плюс ; часть operator + в перегрузке операторов .
- Бинарный оператор плюс ; часть operator + в перегрузке операторов .
-
- Унарный оператор минус ; часть operator - в перегрузке операторов .
- Бинарный оператор минус ; часть operator - в перегрузке операторов .
*
- Оператор косвенного обращения ; часть operator * в перегрузке операторов .
- Оператор умножения ; часть operator * в перегрузке операторов .
- Оператор указателя или часть оператора указателя на член в деклараторе или в спецификации типа .
|
(начиная с C++17) |
/
- Оператор деления ; часть operator / в перегрузке операторов .
%
- Оператор взятия остатка ; часть operator % в разделе перегрузка операторов .
^ (включая xor )
- Побитовый оператор исключающего ИЛИ ; часть operator ^ в разделе перегрузка операторов .
& (включая bitand )
- Оператор взятия адреса ; часть operator & в разделе перегрузки операторов .
- Побитовый оператор И ; часть operator & в разделе перегрузки операторов .
- Оператор lvalue-ссылки в деклараторе или в type-id .
|
(начиная с C++11) |
| (включая bitor )
- Побитовый оператор ИЛИ ; часть operator | в разделе перегрузка операторов .
=
- Простой оператор присваивания ; часть operator = в перегрузке операторов , которая может быть специальной функцией-членом ( оператор копирующего присваивания или оператор перемещающего присваивания (начиная с C++11) ).
- Часть синтаксиса копирующей инициализации и агрегатной инициализации (до C++11) копирующей инициализации списком (начиная с C++11) для инициализатора .
- В объявлении функции вводит аргумент по умолчанию .
- В списке параметров шаблона вводит аргумент шаблона по умолчанию .
- В определении псевдонима пространства имён разделяет псевдоним и целевое пространство имён.
- В определении перечисления вводит значение перечислителя.
- Часть pure-specifier в объявлении чистой виртуальной функции .
|
(начиная с C++11) |
|
(начиная с C++20) |
<
- Оператор меньше ; часть operator < в перегрузке операторов .
-
В
static_cast,const_cast,reinterpret_castилиdynamic_cast, вводит type-id. - Вводит список аргументов шаблона .
- Вводит список параметров шаблона в
-
- объявление template declaration
- частичная специализация partial specialization
| (since C++20) |
- Часть template <> в объявлении специализации шаблона .
- Вводит имя заголовка в
|
(начиная с C++17) |
|
(начиная с C++20) |
>
- Оператор "больше" ; часть operator > в перегрузке операторов .
-
static_cast,const_cast,reinterpret_cast, илиdynamic_cast, обозначают конец type-id. - Обозначают конец списка шаблонных аргументов .
- Обозначают конец списка шаблонных параметров в
-
- объявление template declaration
- частичная специализация partial specialization
| (since C++20) |
- Часть template <> в объявлении специализации шаблона .
- Указывает конец имени заголовка в
|
(начиная с C++17) |
| (начиная с C++20) |
,
- Оператор запятая ; часть operator, в перегрузке операторов .
- Разделитель списка в
-
- список деклараторов в объявлении
- список инициализаторов в инициализации
- список аргументов размещения в placement new
- список аргументов в выражении вызова функции
- список перечислителей в объявлении enum
- список базовых классов в объявлении класса
- список инициализации членов в определении конструктора
- список параметров функции
- список параметров шаблона
- список аргументов шаблона
|
(since C++11) |
|
(since C++17) |
|
(since C++23) |
-
- список параметров макроса в определении функционального макроса
- список аргументов макроса при вызове функционального макроса , если не находится внутри скобок аргумента
|
(since C++11) |
Многозначные операторы и пунктуаторы
...
- В списке параметров декларатора функции или лямбда-выражения (начиная с C++11) или пользовательского направляющего вывода (начиная с C++17) , обозначает вариативную функцию .
- В обработчике , обозначает универсальный обработчик.
|
(since C++11) |
| (since C++26) |
::
- Оператор разрешения области видимости в
-
- квалифицированное имя
- объявление указателя на член
-
выражение
newилиdeleteдля указания, что поиск выполняется только среди глобальных функций выделения или освобождения памяти
|
(since C++11) |
| (since C++17) |
. *
- >
- Оператор доступа к члену ; часть operator - > в перегрузке операторов .
|
(since C++11) |
|
(since C++17) |
|
(since C++20) |
- > *
- Оператор доступа к члену по указателю ; часть operator - > * в разделе перегрузки операторов .
+ =
- Оператор составного присваивания ; часть operator + = в перегрузке операторов .
- =
- Оператор составного присваивания ; часть operator - = в перегрузке операторов .
* =
- Оператор составного присваивания ; часть operator * = в перегрузке операторов .
/ =
- Оператор составного присваивания ; часть operator / = в перегрузке операторов .
% =
- Оператор составного присваивания ; часть operator % = в перегрузке операторов .
^ = (включая xor_eq )
- Оператор составного присваивания ; часть operator ^ = в перегрузке операторов .
& = (включая and_eq )
- Оператор составного присваивания ; часть operator & = в перегрузке операторов .
| = (включая or_eq )
- Оператор составного присваивания ; часть operator | = в перегрузке операторов .
==
- Оператор равенства ; часть operator == в перегрузке операторов .
! = (включая not_eq )
- Оператор неравенства ; часть operator ! = в перегрузке операторов .
<=
- Оператор "меньше или равно" ; часть operator <= в разделе перегрузки операторов .
>=
- Оператор «больше или равно» ; часть operator >= в разделе перегрузки операторов .
<=>
|
(начиная с C++20) |
&& (включая and )
- Логический оператор И ; часть operator && в разделе перегрузка операторов .
|
(начиная с C++11) |
|| (включая or )
- Логический оператор ИЛИ ; часть operator || в разделе перегрузка операторов .
<<
- Оператор побитового сдвига ; часть operator << в перегрузке операторов ( побитовый оператор или оператор вставки в поток ).
>>
- Оператор побитового сдвига ; часть operator >> в перегрузке операторов ( побитовый оператор или оператор извлечения из потока ).
<<=
- Оператор составного присваивания ; часть operator <<= в перегрузке операторов .
>>=
- Оператор составного присваивания ; часть operator >>= в перегрузке операторов .
++
- Оператор инкремента ; часть operator ++ в разделе перегрузка операторов .
--
- Оператор декремента ; часть operator -- в разделе перегрузка операторов .
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
-
- 5.12 Операторы и пунктуаторы [lex.operators]
- Стандарт C++20 (ISO/IEC 14882:2020):
-
- 5.12 Операторы и пунктуаторы [lex.operators]
- Стандарт C++17 (ISO/IEC 14882:2017):
-
- 5.12 Операторы и пунктуаторы [lex.operators]
- Стандарт C++14 (ISO/IEC 14882:2014):
-
- 2.13 Операторы и пунктуаторы [lex.operators]
- Стандарт C++11 (ISO/IEC 14882:2011):
-
- 2.13 Операторы и пунктуаторы [lex.operators]
- Стандарт C++03 (ISO/IEC 14882:2003):
-
- 2.12 Операторы и пунктуаторы [lex.operators]
- Стандарт C++98 (ISO/IEC 14882:1998):
-
- 2.12 Операторы и пунктуаторы [lex.operators]
Смотрите также
| Альтернативные представления | альтернативные написания для некоторых операторов |
|
Документация C
для
Пунктуация
|
|