Имя всей группы из четырех символов декларации С++?
Мое понимание состоит в том, что в общем случае целую группу не-буквенно-цифровых символов, таких как *,?,;, # и т.д., можно назвать пунктуаторами. Однако в выражении типа
3*4
* специально известен как "оператор", тогда как в объявлении типа
int *p;
* не является оператором, а просто указывает, что p является указателем. Аналогично, 3 дополнительных символа &, [] и() не называются операторами при использовании в объявлениях. Я знаю, что означают все эти символы в их различных контекстах, как они выражены и что они делают, но существует ли конкретное имя для всей группы из четырех символов при использовании в объявлениях? Я всегда называл их "атрибутами" из-за отсутствия чего-либо лучшего, и я не могу найти ничего конкретного в языковых стандартах относительно имени группы.
Ответы
Ответ 1
Как вы уже знаете, символы типа *,?,;, # и т.д. называются Punctuator в C и С++.
Пунктуатор - это токен, который имеет синтаксический и смысловой смысл для компилятор , но точное значение зависит от контекста. A пунктуатор также может быть токеном, который используется в синтаксисе Препроцессор.
Пунктуаторы не являются операторами или идентификаторами. Некоторые символы могут использоваться либо как пунктуатор, либо как оператор, либо как часть оператора. Контекст события указывает значение.
От C Стандарт # 6.4.6:
Прецитера является символом, который имеет независимое синтаксическое и семантическое значение. В зависимости от контекста он может указывать операцию, которая будет выполняться (которая, в свою очередь, может дать значение или обозначение функции, создать побочный эффект или некоторую комбинацию), и в этом случае он известен как оператор (другие формы оператора также существуют в некоторых контекстах). Операнд - это объект, на котором действует оператор.
Их значение различается в зависимости от контекста, в котором они использовались. Таким образом, нет специального имени для всей группы из четырех символов, и если вы хотите называть их одним словом, то, я считаю, слово punctuator является наиболее подходящим словом.
Дополнительно: Большая часть пунктуатора распространена в C и С++.
Но С++ имеет некоторые дополнительные символы, такие как ::
, .*
, new
, delete
и т.д.
Ответ 2
но существует ли конкретное имя для всей группы из четырех символов при использовании в объявлениях?
Сорт. Грамматическая конструкция, которая ссылается на эти символы в объявлениях, является "деклараторами". Однако это имя не используется за пределами стандартных обсуждений; там просто не нужно ссылаться на символы декларатора как на группу.
Кроме того, есть больше символов-деклараторов, чем это. В C существует ()
(для объявлений функций). С++ дает нам ...
(объявления пакета параметров) и &&
(ссылка r-value).
Ответ 3
При использовании в объявлении инструкции эти 4 символа считаются модификаторами декларатора. Прецидент классификатора просто представляет, что их можно использовать в нескольких контекстах, поэтому они также считаются пунктуаторами. https://msdn.microsoft.com/en-us/library/aa267831(v=vs.60).aspx
При использовании в не декларативной усадьбе все 4 из этих символов (*, &, [],()) считаются операторами в С++. Существуют различные типы операторов, такие как арифметические операторы, реляционные операторы и логические операторы. Символ умножения относится к категории арифметических операторов, где, поскольку остальные 4 оператора принадлежат к разной/другой категории операторов. * называется оператором постулата. и называется адресом-оператора. [] называется индексом.() называется оператором вызова функции. Поскольку все они считаются операторами в С++, это означает, что вы можете переопределить их функциональность.
Это хорошая ссылка, которая демонстрирует приоритет оператора в С++: http://www.geeksforgeeks.org/operators-c-c/