Primární výrazy
Primární výrazy jsou stavebními bloky složitějších výrazů.Jsou literály, názvy a názvy kvalifikované obsluhy rozsah rozlišení (::).Primární výraz může mít některou z těchto forem:
literal
this
:: name
name
( expression )
A literál je konstantní primární výraz.Jeho typ závisí na formuláři specifikace.Viz literály kompletní informace o určení literály.
Této klíčové slovo je ukazatel na objekt třídy.Je k dispozici v rámci funkce členů nestatické a odkazuje na instanci třídy, pro které byla vyvolána funkce.Této vně těla funkce člen třídy nelze použít klíčové slovo.
Typ této je ukazatel type*** const** (kde type je název třídy) v rámci funkce úpravy není konkrétně této ukazatel. Následující příklad ukazuje členské funkce prohlášení a typy této:
// 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
};
Viz typu Tento ukazatel Další informace o změně typu této ukazatel.
Operátor oboru rozlišení (::) následuje název představuje primární výraz.Tyto názvy musí být názvy v globálním rozsahem nejsou názvy členů.Prohlášení o název určen typ tohoto výrazu.Je l hodnota (tj, může se zobrazit na levé straně výraz operátor přiřazení) je-li deklarující název l hodnota.Operátor oboru rozlišení umožňuje globální název odkazuje, i když tento název je skrytá v aktuálním oboru.Viz oboru příklad použití rozlišení oboru operátor.
Výraz uzavřený v závorkách je primární výraz, jehož typ a hodnoty jsou stejné jako výraz unparenthesized.Pokud je výraz unparenthesized l hodnota je l hodnota.
V rámci primární výraz syntaxe uvedené výše název znamená cokoli v syntaxi popisu pro názvy, i když použijete operátor oboru rozlišení před název typy názvů, které může dojít pouze v rámci třídy není povoleno.To zahrnuje uživatelem definovaný převod funkce názvy a názvy destruktoru.
Příklady primární výrazy:
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
Následující příklady jsou všechny považovány za názvya tedy primární výrazy, v různých formách:
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