Spec-Zone.ru › C++

Знаки препинания

Это знаки препинания в 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 (включая constexpr if)(с 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, укажите тип-идентификатор.
  • Укажите список аргументов шаблона.
  • Укажите список параметров шаблона в
    • декларации шаблона
    • частичной специализации
    • лямбда-выражении (с C++20)
  • Часть template<> в декларации специализации шаблона.
  • Укажите имя заголовочного файла в
    • #include директиве
    • __has_include выражении препроцессора (с C++17)
    • import декларации (с C++20)

>

  • Оператор больше; часть operator> в перегрузке операторов.
  • static_cast, const_cast, reinterpret_cast или dynamic_cast, укажите конец типа-идентификатора.
  • Укажите конец списка аргументов шаблона.
  • Укажите конец списка параметров шаблона в
    • декларации шаблона
    • частичной специализации
    • лямбда-выражении (с C++20)
  • Часть 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API