Знаки препинания
Это знаки препинания в C++. Значение каждого символа подробно описано на страницах по ссылкам.
Операторы препроцессора
Операторы препроцессора распознаются препроцессорами.
#
Альтернативное написание — %:.
##
Альтернативное написание — %:%:.
Односимвольные операторы и знаки препинания
{ и }
Альтернативные написания — <% и %> соответственно.
- В определении класса ограничивают описание членов.
- В определении перечисления ограничивают список перечислителей.
- Ограничивают составной оператор. Составной оператор может быть частью
| (начиная с C++11) |
- Часть синтаксиса агрегатной инициализации(до C++11)списковой инициализации(начиная с C++11) инициализатора.
- В определении пространства имён ограничивают тело пространства имён.
- В спецификации языковой связи ограничивают объявления.
| (начиная с C++20) |
[ и ]
Альтернативные написания — <: и :> соответственно.
- Оператор индексирования; часть
operator[]при перегрузке операторов. - Часть декларатора массива в объявлении или идентификаторе типа (например, в выражении
new). - Часть оператора
new[]при перегрузке операторов (функция выделения памяти). - Часть оператора
delete[]в выражении delete и при перегрузке операторов (функция освобождения памяти).
| (начиная с C++11) |
| (начиная с C++17) |
| (начиная с C++26) |
( и )
- В выражении обозначают группировку.
- Оператор вызова функции; часть
operator()при перегрузке операторов. - В приведении типа в стиле вызова функции ограничивают выражение/инициализаторы.
- В
static_cast,const_cast,reinterpret_castилиdynamic_castограничивают выражение. - Ограничивают операнд следующих операторов:
| (начиная с C++11) |
- В выражении размещения
newограничивают аргументы размещения. - В выражении
newпри необходимости ограничивают идентификатор типа. - В выражении
newограничивают инициализаторы. - В приведении типа в стиле C ограничивают идентификатор типа.
- В объявлении или идентификаторе типа обозначают группировку.
- Ограничивают список параметров в
| (начиная с C++11) | |
| (начиная с C++17) | |
| (начиная с C++20) |
- Часть синтаксиса прямой инициализации инициализатора.
- В объявлении asm ограничивают строковый литерал.
- В списке инициализаторов членов ограничивают инициализаторы базового класса или члена.
- Ограничивают управляющую часть оператора выбора или итерации, включая:
| (начиная с C++11) |
- В обработчике ограничивают объявление параметра.
- В определении функционально-подобного макроса ограничивают параметры макроса.
- В вызове функционально-подобного макроса ограничивают аргументы макроса или предотвращают интерпретацию запятых как разделителей аргументов.
- Часть оператора препроцессора
defined,__has_include(начиная с C++17),__has_cpp_attribute(начиная с C++20).
| (начиная с C++11) | ||
| (начиная с C++14) | ||
| (начиная с C++17) | ||
| (начиная с C++20) |
;
- Обозначает конец
| (начиная с C++20) |
- Разделяет условие и оператор оператора
for.
:
- Часть условного оператора.
- Часть объявления метки.
- В базовой части определения класса вводит базовый класс.
- Часть спецификатора доступа в описании членов.
- В объявлении битового поля вводит ширину.
- В определении конструктора вводит список инициализаторов членов.
| (начиная с C++11) |
| (начиная с C++17) |
| (начиная с 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 в деклараторе или идентификаторе типа.
| (начиная с C++11) |
|
Альтернативное написание — bitor.
-
Оператор побитового ИЛИ; часть
operator|при перегрузке операторов.
=
- Оператор простого присваивания; часть
operator=при перегрузке операторов; он может быть специальной функцией-членом (оператор присваивания копированиемили оператор присваивания перемещением(начиная с C++11)). - Часть синтаксиса копирующей инициализации и агрегатной инициализации(до C++11)копирующей списковой инициализации(начиная с C++11) инициализатора.
- В объявлении функции вводит аргумент по умолчанию.
- В списке параметров шаблона вводит аргумент шаблона по умолчанию.
- В определении псевдонима пространства имён разделяет псевдоним и пространство имён, для которого он задан.
- В определении перечисления вводит значение перечислителя.
- Часть спецификатора чистоты в объявлении чисто виртуальной функции.
| (начиная с C++11) |
| (начиная с C++20) |
<
- Оператор «меньше»; часть
operator<при перегрузке операторов. - В
static_cast,const_cast,reinterpret_castилиdynamic_castвводит идентификатор типа. - Вводит список аргументов шаблона.
- Вводит список параметров шаблона в
| (начиная с C++20) |
- Часть
template<>в объявлении специализации шаблона. - Вводит имя заголовка в
| (начиная с C++17) | |
| (начиная с C++20) |
>
- Оператор «больше»; часть
operator>при перегрузке операторов. - В
static_cast,const_cast,reinterpret_castилиdynamic_castобозначает конец идентификатора типа. - Обозначает конец списка аргументов шаблона.
- Обозначает конец списка параметров шаблона в
| (начиная с C++20) |
- Часть
template<>в объявлении специализации шаблона. - Обозначает конец имени заголовка в
| (начиная с C++17) | |
| (начиная с C++20) |
,
-
Оператор запятая; часть
operator,в перегрузке операторов. - Разделитель элементов списка в
- списке деклараторов в объявлении
- списке инициализаторов в инициализации
- списке аргументов размещения в размещающем new
- списке аргументов в выражении вызова функции
- списке перечислителей в объявлении перечисления
- списке базовых классов в объявлении класса
- списке инициализаторов членов в определении конструктора
- списке параметров функции
- списке параметров шаблона
- списке аргументов шаблона
| (начиная с C++11) |
| (начиная с C++17) |
| (начиная с C++23) |
- списке параметров макроса в определении функционального макроса
- списке аргументов макроса в вызове функционального макроса, если только запятая не находится между скобками аргумента
| (начиная с C++11) |
Многосимвольные операторы и знаки пунктуации
[: и :] (начиная с C++26)
- Ограничивают спецификатор splice.
^^ (начиная с C++26)
...
- В списке параметров декларатора функции или лямбда-выражения(начиная с C++11) или пользовательского руководства по выводу типа(начиная с C++17) обозначает функцию с переменным числом аргументов.
- В обработчике обозначает обработчик любых исключений.
| (начиная с C++11) |
| (начиная с C++26) |
::
- Оператор разрешения области видимости в
- квалифицированном имени
- объявлении указателя на член
- выражении
newилиdelete, указывая, что поиск выполняется только для глобальных функций выделения или освобождения памяти
| (начиная с C++11) |
| (начиная с C++17) |
.*
->
-
Оператор доступа к члену; часть
operator->в перегрузке операторов.
| (начиная с C++11) |
| (начиная с C++17) |
| (начиная с 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 о знаках пунктуации | |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/language/punctuators