Знаки препинания
Это знаки препинания в C++. Значение каждого символа подробно описано на связанных страницах.
{ }
- В определении класса/структуры или объединения, отделяют описание членов.
- В определении перечисления, отделяют список перечислителей.
- Отделяют составное операторное выражение. Составное выражение может быть частью
- определения функции
- блока try или оператора catch
- блока function-try
- лямбда-выражения (с C++11)
- В инициализации, отделяют инициализаторы. Этот вид инициализации называется инициализацией списком.(с C++11)
- В определении пространства имён, отделяют тело пространства имён.
- В спецификации языка связи, отделяют объявления.
- В выражении требований, отделяют требования. (с C++20)
- В составном требовании, отделяют выражение. (с C++20)
- В объявлении экспорта, отделяют объявления. (с C++20)
[ ]
- Оператор индексирования; часть
operator[]в перегрузке операторов. - Часть декларатора массива в объявлении или типе данных (например, в выражении new).
- Часть оператора
new[]в перегрузке операторов (функция выделения). - Часть оператора
delete[]в выражении delete и перегрузке операторов (функция освобождения). - В лямбда-выражении, отделяют захваты. (с C++11)
- В спецификаторе атрибута, отделяют атрибуты. (с C++11)
- В объявлении структурированной привязки, отделяют список идентификаторов. (с C++17)
#
##
( )
- В выражении, указывает группировку.
- Оператор вызова функции; часть
operator()в перегрузке операторов. - В выражении приведения типа в стиле функции, отделяют выражение/инициализаторы.
- В
static_cast,const_cast,reinterpret_castилиdynamic_cast, отделяют выражение. - В
typeid,sizeof,sizeof...,alignofилиnoexcept(с C++11) выражении, отделяют операнд. - В выражении placement new, отделяют аргументы размещения.
- В выражении new, необязательно отделяют тип-идентификатор.
- В выражении new, отделяют инициализаторы.
- В приведении типа в стиле C, отделяют тип-идентификатор.
- В объявлении или типе данных, указывают группировку.
- Отделяют список параметров в
- деклараторе функции (в объявлении или типе данных)
- лямбда-выражении (с C++11)
- руководстве по выводу аргументов шаблона класса (с C++17)
- выражении требований (с C++20)
- В прямой инициализации, отделяют инициализаторы.
- В объявлении asm, отделяют строковый литерал.
- В списке инициализаторов членов, отделяют инициализаторы базового класса или члена.
- В операторе
if(включаяconstexprif)(с C++17),switch,while,do-whileилиfor(включая диапазонныйfor)(с C++11) операторе, отделяют управляющую часть. - В операторе catch, отделяют декларацию параметра.
- В определении макроса с аргументами, отделяют параметры макроса.
- В вызове макроса с аргументами, отделяют аргументы макроса или препятствуют интерпретации запятых как разделителей аргументов.
- Часть
defined,__has_include(с C++17),__has_cpp_attribute(с C++20) препроцессорного оператора. - В
static_assertобъявление, отделяют операнды. (с C++11) - В спецификаторе
decltype,noexceptспецификаторе,alignasспецификаторе, условныйexplicitспецификатор(с C++20), отделяют операнд. (с C++11) - В атрибуте, отделяют аргументы атрибута. (с C++11)
- Часть
decltype(auto)спецификатора. (с C++14) - Отделяют выражение слияния. (с C++17)
- Часть
__VA_OPT__подстановки в определении вариационного макроса. (с C++20)
;
- Указывает конец
- оператора оператор (включая инициализирующее выражение оператора for)
- объявления объявления или объявления члена
- объявления модуля, объявления импорта, ввода фрагмента глобального модуля или ввода фрагмента частного модуля (с C++20)
- условия требования (с C++20)
- Разделяет второй и третий операторы оператора for.
:
- Часть оператора условного оператора.
- Часть объявления метки.
- В заголовке класса определения класса указывает базовый раздел.
- Часть спецификатора доступа в объявлении члена.
- В объявлении разряда бита указывает ширину.
- В определении конструктора указывает список инициализаторов членов.
- В операторе цикла по диапазону разделяет объявление диапазона и инициализатор диапазона. (с C++11)
- Указывает базовую часть перечисления, которая определяет базовый тип перечисления. (с C++11)
- В спецификаторе атрибута разделяет префикс использования атрибута и список атрибутов. (с C++17)
- В объявлении модуля или объявлении импорта раздела модуля указывает имя раздела модуля. (с C++20)
- Часть ввода фрагмента частного модуля (
module :private;). (с C++20)
...
- В списке параметров декларатора функции или лямбда-выражения(с C++11)или пользовательского руководства по выводу(с C++17) указывает функцию с переменным числом аргументов.
- В блоке обработки исключений указывает обработчик для всех исключений.
- В определении макроса указывает макрос с переменным числом аргументов. (с C++11)
- Указывает объявление и расширение набора. (с C++11)
?
- Часть оператора условного оператора.
::
- Оператор разрешения области видимости в
- квалифицированном имени
- объявлении указателя на член
- выражении new или delete, чтобы указать, что ищут только глобальные функции выделения или освобождения памяти
- В атрибуте указывает область видимости атрибута. (с C++11)
- Часть определения вложенного пространства имен. (с C++17)
.
- Оператор доступа к члену.
- В агрегатной инициализации указывает обозначение. (с C++20)
- Часть имени модуля или имени раздела модуля. (с C++20)
.*
->
- Оператор доступа к члену; часть
operator->в перегрузке операторов. - В деклараторе функции или лямбда-выражении указывает возвращаемый тип. (с C++11)
- В пользовательском руководстве по выводу указывает возвращаемый тип. (с C++17)
- В составном условии указывает условие возвращаемого типа. (с C++20)
->*
- Оператор доступа к указателю на член; часть
operator->*в перегрузке операторов.
~
- Унарный оператор дополнения (т. е. побитовое отрицание); часть
operator~в перегрузке операторов. - Часть выражения с идентификатором для именования деструктора или псевдодеструктора.
!
- Логический оператор отрицания; часть
operator!в перегрузке операторов. - Часть обратной формы оператора consteval
if. (с C++23)
+
- Унарный оператор плюс; часть
operator+в перегрузке операторов. - Бинарный оператор плюс; часть
operator+в перегрузке операторов.
-
- Унарный оператор минус; часть
operator-в перегрузке операторов. - Бинарный оператор минус; часть
operator-в перегрузке операторов.
*
- Оператор косвенного обращения; часть
operator*в перегрузке операторов. - Оператор умножения; часть
operator*в перегрузке операторов. - Оператор указателя или часть оператора указателя на член в деклараторе или в типе.
- Часть
*thisв списке захвата лямбда-выражения для захвата текущего объекта по значению. (с C++17)
/
- Оператор деления; часть
operator/в перегрузке операторов.
%
- Оператор модуля; часть
operator%в перегрузке операторов.
^
- Оператор побитового исключающего ИЛИ; часть
operator^в перегрузке операторов.
&
- Оператор взятия адреса; часть
operator&в перегрузке операторов. - Оператор побитового И; часть
operator&в перегрузке операторов. - Оператор ссылки на lvalue в деклараторе или в типе-идентификаторе.
- В захвате лямбда-выражения, укажите захват по ссылке. (с C++11)
- Квалификатор ссылки в декларации метода класса. (с C++11)
|
- Оператор побитового ИЛИ; часть
operator|в перегрузке операторов.
=
- Оператор присваивания; часть
operator=в перегрузке операторов, который может быть специальным членом (оператором копирования присваиванияили оператором перемещения присваивания(с C++11)). - В инициализации, укажите копирующую инициализациюили инициализацию списком(с C++11).
- В декларации функции, укажите значение по умолчанию аргумента.
- В списке параметров шаблона, укажите значение по умолчанию для параметра шаблона.
- В определении псевдонима пространства имён, разделите псевдоним и алиасируемое пространство имён.
- В определении перечисления, укажите значение перечислителя.
- Часть чистого спецификатора в декларации чисто виртуального метода.
- Захват по умолчанию в захвате лямбда-выражения, укажите захват по значению. (с C++11)
- Часть определений по умолчанию (
=default;) или удалённых определений (=delete;) в определении функции. (с C++11) - В декларации псевдонима типа, разделите псевдоним и алиасируемый тип. (с C++11)
- В определении концепции, разделите имя концепции и выражение ограничения. (с C++20)
+=
- Оператор сложного присваивания; часть
operator+=в перегрузке операторов.
-=
- Оператор сложного присваивания; часть
operator-=в перегрузке операторов.
*=
- Оператор сложного присваивания; часть
operator*=в перегрузке операторов.
/=
- Оператор сложного присваивания; часть
operator/=в перегрузке операторов.
%=
- Оператор сложного присваивания; часть
operator%=в перегрузке операторов.
^=
- Оператор сложного присваивания; часть
operator^=в перегрузке операторов.
&=
- Оператор сложного присваивания; часть
operator&=в перегрузке операторов.
|=
- Оператор сложного присваивания; часть
operator|=в перегрузке операторов.
==
- Оператор равенства; часть
operator==в перегрузке операторов.
!=
- Оператор неравенства; часть
operator!=в перегрузке операторов.
<
- Оператор меньше; часть
operator<в перегрузке операторов. - В
static_cast,const_cast,reinterpret_castилиdynamic_cast, укажите тип-идентификатор. - Укажите список аргументов шаблона.
- Укажите список параметров шаблона в
- Часть
template<>в декларации специализации шаблона. - Укажите имя заголовочного файла в
-
#includeдирективе -
__has_includeвыражении препроцессора (с C++17) -
importдекларации (с C++20)
>
- Оператор больше; часть
operator>в перегрузке операторов. -
static_cast,const_cast,reinterpret_castилиdynamic_cast, укажите конец типа-идентификатора. - Укажите конец списка аргументов шаблона.
- Укажите конец списка параметров шаблона в
- Часть
template<>в декларации специализации шаблона. - Укажите конец имени заголовочного файла в
-
#includeдирективе -
__has_includeвыражении препроцессора (с C++17) -
importдекларации (с C++20)
<=
- Оператор меньше или равно; часть
operator<=в перегрузке операторов.
>=
- Оператор больше или равно; часть
operator>=в перегрузке операторов.
<=> (с C++20)
- Оператор трёхстороннего сравнения (spaceship); часть
operator<=>в перегрузке операторов.
&&
- Оператор логического И; часть
operator&&в перегрузке операторов. - Оператор ссылки на временное значение (rvalue-reference) в деклараторе или в типе. (с C++11)
- Квалификатор ссылок в объявлении метода-члена. (с C++11)
||
- Оператор логического ИЛИ; часть
operator||в перегрузке операторов.
<<
- Оператор побитового сдвига влево; часть
operator<<в перегрузке операторов (побитовый оператор или оператор вставки в поток).
>>
- Оператор побитового сдвига вправо; часть
operator>>в перегрузке операторов (побитовый оператор или оператор извлечения из потока). - Может быть переинтерпретирован как два
>вstatic_cast,const_cast,reinterpret_castилиdynamic_cast, список аргументов шаблона или список параметров шаблона. (с C++11)
<<=
- Оператор составного присваивания; часть
operator<<=в перегрузке операторов.
>>=
- Оператор составного присваивания; часть
operator>>=в перегрузке операторов.
++
- Оператор инкремента; часть
operator++в перегрузке операторов.
--
- Оператор декремента; часть
operator--в перегрузке операторов.
,
- Оператор запятой; часть
operator,в перегрузке операторов. - Разделитель списка в
- списке деклараторов в объявлении
- списке инициализаторов в инициализации
- списке аргументов размещения в размещенном new
- списке аргументов в выражении вызова функции
- списке аргументов в выражении многоаргументного индексации (с C++23)
- списке перечислений в объявлении перечисления
- списке базовых классов в объявлении производного класса класса
- списке инициализаторов в определении конструктора
- списке параметров функции
- списке параметров шаблона
- списке аргументов шаблона
- списке параметров макроса в определении макроса-функции
- списке аргументов макроса в вызове макроса-функции , если он не находится внутри вложенных скобок
- список захвата лямбда-выражения (с C++11)
- список атрибутов атрибутов (с C++11)
- список деклараторов в объявлении using-декларации (с C++17)
- список идентификаторов в объявлении связанных структур (с C++17)
- В объявлении
static_assertразделяйте аргументы. (с C++11)
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2023):
- 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 документация по Разделителям | |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/language/punctuators