Основные выражения

Основные выражения являются стандартными блоками более сложных выражений. Они могут быть литералами, именами и именами, квалифицированными оператором разрешения область (::). Основное выражение может иметь любую из следующих форм.

primary-expression
literal
this
name
:: name ( expression )

A literal — это постоянное первичное выражение. Его тип зависит от формы его спецификации. Дополнительные сведения об указании литерала см. в разделе Литералы .

Ключевое слово this — это указатель на экземпляр класса. Он доступен в нестатических функциях-членах и указывает на экземпляр класса, из который была вызвана функция. Ключевое слово this нельзя использовать за пределами текста функции-члена класса.

Дополнительные сведения о типе this указателя см this . в указателе.

Оператор область разрешения (::), за которым следует имя, является основным выражением. Такие имена должны быть именами в глобальной области, а не именами членов. Объявление имени определяет тип выражения. Это l-значение (т. е. оно может отображаться в левой части выражения назначения), если декларирующее имя является l-значением. Оператор разрешения области действия позволяет ссылаться на глобальное имя, даже если это имя скрыто в текущей области. См. пример использования оператора область разрешения.

Выражение, заключенное в скобки, является основным выражением. Его тип и значение идентичны типу и значению непарентеизированного выражения. Это l-значение, если непарентезное выражение является l-значением.

Ниже приводятся примеры основных выражений.

100 // literal
'c' // literal
this // in a member function, a pointer to the class instance
::func // a global function
::operator + // a global operator function
::A::B // a global qualified name
( i + 1 ) // a parenthesized expression

Эти примеры считаются именами, а также основными выражениями в различных формах:

MyClass // an identifier
MyClass::f // a qualified name
operator = // an operator function name
operator char* // a conversion operator function name
~MyClass // a destructor name
A::B   // a qualified name
A<int> // a template id

См. также

Типы выражений