Espressioni in forma suffissa
Le espressioni di suffisso sono costituite da espressioni primarie o da espressioni in cui gli operatori di suffisso seguono un'espressione primaria. Nella tabella riportata di seguito vengono elencati gli operatori di suffisso.
Operatori di suffisso
Nome dell'operatore |
Notazione dell'operatore |
---|---|
[ ] |
|
( ) |
|
type-name( ) |
|
. o –> |
|
++ |
|
–– |
Nella sintassi seguente vengono descritte le possibili espressioni di suffisso:
primary-expression
postfix-expression [ expression ]
postfix-expression ( expression-list<SUB>opt</SUB> )
simple-type-name ( expression-list<SUB>opt</SUB> )
postfix-expression . name
postfix-expression –> name
postfix-expression ++
postfix-expression ––
cast-keyword < typename > (expression )
typeid ( typename )
L'elemento postfix-expression sopra riportato può essere un'espressione primaria o un'altra espressione di suffisso. Vedere espressioni primarie. Le espressioni di suffisso vengono raggruppate da sinistra a destra, consentendone il concatenamento nel modo seguente:
func(1)->GetValue()++
Nell'espressione sopra riportata, func è un'espressione primaria, func (1) è un'espressione di suffisso di funzione, (1) ->GetData è un'espressione di suffisso che specifica un membro della classe, func (1) ->GetData () è un'altra espressione di suffisso di funzione e l'intera espressione è un'espressione di suffisso che incrementa il valore restituito di GetData. Il significato dell'intera espressione è "chiamare func passando 1 come argomento e ottenere un puntatore a una classe come valore restituito. Chiamare GetValue() su tale classe, quindi incrementare il valore restituito.
Le espressioni sopra elencate sono espressioni di assegnazione, pertanto il loro risultato deve essere un r-value.
Il formato dell'espressione di suffisso
simple-type-name ( expression-list )
indica la chiamata del costruttore. Se il nome di tipo semplice è un tipo fondamentale, l'elenco di espressioni deve essere costituito da un'unica espressione, la quale indica un cast del valore dell'espressione al tipo fondamentale. Questo tipo di espressione cast riproduce un costruttore. Poiché questo formato consente la costruzione dei tipi fondamentali e delle classi utilizzando la stessa sintassi, è particolarmente utile quando si definiscono le classi modello.
cast-keyword è una delle seguenti dynamic_cast, static_cast o reinterpret_cast. Ulteriori informazioni sono disponibili in dynamic_cast, static_cast e reinterpret_cast.
L'operatore typeid viene considerato un'espressione di suffisso. Vedere operatore typeid.