Expressions primaires

Les expressions primaires sont des blocs de construction d'expressions plus complexes. Il peut s’agir de littéraux, de noms et de noms qualifiés par l’opérateur de résolution d’étendue (::). Une expression primaire peut prendre chacune des formes suivantes :

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

A literal est une expression primaire constante. Son type dépend de la forme de sa spécification. Pour plus d’informations sur la spécification de littéraux, consultez Littéraux .

Le this mot clé est un pointeur vers une instance de la classe. Elle est disponible dans les fonctions membres non statiques et pointe vers l’instance de la classe à partir de laquelle la fonction a été appelée. La this mot clé ne peut pas être utilisée en dehors du corps d’une fonction membre de classe.

Pour plus d’informations sur le type du this pointeur, consultez this pointeur.

L’opérateur de résolution d’étendue (::) suivi d’un nom est une expression principale. Ces noms doivent être des noms au niveau de la portée globale, pas des noms de membres. La déclaration du nom détermine le type de l’expression. Il s’agit d’une valeur l (autrement dit, elle peut apparaître sur le côté gauche d’une expression d’affectation) si le nom déclarant est une valeur l-value. L’opérateur résolution-portée permet de faire référence à un nom global, même si ce nom est masqué dans la portée actuelle. Consultez l’étendue pour obtenir un exemple d’utilisation de l’opérateur de résolution d’étendue.

Une expression entre parenthèses est une expression primaire. Son type et sa valeur sont identiques au type et à la valeur de l’expression nonparenthesized. Il s’agit d’une valeur l si l’expression nonparenthesized est une valeur l-value.

Les exemples d'expressions principaux incluent :

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

Ces exemples sont tous considérés comme des noms et, par conséquent, des expressions primaires, sous différentes formes :

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

Voir aussi

Types d’expressions