Поделиться через


Первичные выражения

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

literal
this
:: name
name 
( expression )

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

This ключевое слово указатель к объекту класса.Он доступен в функции-члены и нестатические точки, к экземпляру класса, для которого функция была вызвана. This ключевое слово нельзя использовать вне тела функции члена класса.

Тип this указатель type *const (где type имя класса) в рамках изменения функций не в частности this указатель.В следующем примере показано объявление функций-членов и типы this.

// expre_Primary_Expressions.cpp
// compile with: /LD
class Example
{
public:
    void Func();          //  * const this
    void Func() const;    //  const * const this
    void Func() volatile; //  volatile * const this
};

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

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

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

В контексте основного синтаксиса выражений заданной выше Имя означает любое синтаксис, описанный для namesоднако при использовании оператора разрешения области действия перед именем, не допускаются типы имен, которые могут произойти только в классе.Сюда входят определяемые пользователем имена функций преобразования и имена деструктора.

Примеры первичных выражений:

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

Примеры ниже взаимодействуют все именаи поэтому первичные выражения в различных формах:

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

См. также

Ссылки

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