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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour