Espressioni primarie

Le espressioni primarie sono i blocchi predefiniti di espressioni più complesse. Possono essere valori letterali, nomi e nomi qualificati dall'operatore di risoluzione dell'ambito (::). Un'espressione primaria può avere uno dei seguenti formati:

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

Un literal è un'espressione primaria costante. Il tipo di tale valore letterale dipende dal formato della specifica. Per altre informazioni sulla specifica di valori letterali, vedere Valori letterali .

La this parola chiave è un puntatore a un'istanza della classe . È disponibile all'interno di funzioni membro non statiche e punta all'istanza della classe da cui è stata richiamata la funzione. La this parola chiave non può essere usata all'esterno del corpo di una funzione membro della classe.

Per altre informazioni sul tipo di this puntatore, vedere this puntatore.

L'operatore di risoluzione dell'ambito (::) seguito da un nome è un'espressione primaria. Tali nomi devono essere nomi in ambito globale e non nomi di membri. La dichiarazione del nome determina il tipo dell'espressione. Si tratta di un l-value (ovvero, può essere visualizzato sul lato sinistro di un'espressione di assegnazione) se il nome dichiarante è un l-value. L'operatore di risoluzione dell'ambito consente di fare riferimento a un nome globale, anche se il nome è nascosto nell'ambito corrente. Vedere Ambito per un esempio di come usare l'operatore di risoluzione dell'ambito.

Un'espressione racchiusa tra parentesi è un'espressione primaria. Il tipo e il valore sono identici al tipo e al valore dell'espressione nonparenthesized. Si tratta di un valore l se l'espressione nonparenthesized è un l-value.

Gli esempi di espressioni primarie includono:

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

Questi esempi sono tutti considerati nomi e, di conseguenza, espressioni primarie, in varie forme:

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

Vedi anche

Tipi di espressioni