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