Espressioni principali
Le espressioni principali sono i blocchi predefiniti di espressioni più complesse.Sono valori letterali, nomi e nomi qualificati dall'operatore di risoluzione dell'ambito (::).Un'espressione primaria può avere uno dei seguenti formati:
literal
this
:: name
name
( expression )
In valore letterale è un'espressione primaria costante.Il tipo dipende dal form della specifica.vedere valori letterali per informazioni complete su come specificare i valori letterali.
ciò la parola chiave è un puntatore all'oggetto della classe.È disponibile all'interno delle funzioni membro non static e i puntiistanza della classe per cui la funzione vengono richiamati.ciò non è possibile utilizzare la parola chiave all'esterno del corpo di una funzione membro della classe.
il tipo di ciò il puntatore viene type *const (dove type è il nome della classe) all'interno della modifica di funzioni non specificamente ciò puntatore.Nell'esempio seguente le dichiarazioni di funzione membro e i tipi di ciò:
// 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
};
vedere tipo di questo puntatore per ulteriori informazioni sulla modifica del tipo di ciò puntatore.
L'operatore di risoluzione dell'ambito (::) seguito da un nome rappresenta un'espressione primaria.Tali nomi devono essere nomi in ambito globale, non i nomi dei membri.Il tipo di questa espressione è determinato dalla dichiarazione del nome.È un l-value (ovvero può essere visualizzato a sinistra di un'espressione operatore di assegnazione) se il nome di dichiarazione è un l-value.L'operatore di risoluzione dell'ambito consente un nome globale da fare riferimento a, anche se il nome è nascosto nell'ambito corrente.vedere ambito per un esempio di come utilizzare l'operatore di risoluzione dell'ambito.
Un'espressione racchiusa tra parentesi è un'espressione primaria del tipo e il valore è identico a quello dell'espressione unparenthesized.È un l-value se l'espressione unparenthesized è un l-value.
Nel contesto della sintassi primaria di un'espressione fornita da, nome implementa alcuna operazione nella sintassi seguente per nomituttavia, quando si utilizza l'operatore di risoluzione dell'ambito prima del nome, tipi di nomi che possono verificarsi solo in una classe non sia consentito.Sono inclusi i nomi di funzioni definite dall'utente di conversione e i nomi del distruttore.
Esempi di espressioni principali includono:
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
Negli esempi riportati di seguito sono tutti considerati nomie pertanto espressioni primarie, in varie forme:
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