Partager via


Expressions primaire

Les expressions principales sont les blocs de construction des expressions plus complexes.Il est de littéraux, de noms, et les noms qualifiés par l'opérateur de résolution de portée (::).Une expression principal peut avoir l'un des formes :

literal
this
:: name
name 
( expression )

Un littéral est une expression constante primaire.son type dépend du formulaire de sa spécification.Consultez littéraux pour obtenir des informations complètes sur spécifier des littéraux.

Le mot clé de cela est un pointeur vers un objet de classe.Ils sont disponibles dans les fonctions membres non statiques et pointe vers l'instance de la classe pour lequel la fonction a été appelée.Le mot clé de cela ne peut pas être utilisé à l'extérieur de le corps d'une fonction membre de classe.

Le type du pointeur de cela est type *const (où type est le nom de classe) dans les fonctions modifiant pas spécifiquement le pointeur de cela .l'exemple suivant montre des déclarations de fonction membre et les types de cela:

// 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
};

Consultez type de ce pointeur pour plus d'informations sur modifier le type du pointeur de cela .

L'opérateur de résolution de portée (::) suivi d'un nom constitue une expression primaire.De tels noms doivent être des noms au niveau de la portée globale, pas de noms de membre.le type de cette expression est déterminé par la déclaration du nom.Il s'agit d'une l-value (autrement dit, il ne peut apparaître à gauche d'une expression d'opérateur d'assignation) si le nom de la déclaration est une l-value.L'opérateur de résolution de portée permet un nom global à faire référence à, même si ce nom est masqué dans la portée actuelle.Consultez portée pour un exemple d'utilisation de l'opérateur de résolution de portée.

Une expression entre crochets est une expression principal dont type et la valeur sont identiques à ceux de l'expression unparenthesized.Il s'agit d'une l-value si l'expression unparenthesized est une l-value.

Dans le contexte de la syntaxe primaire d'expression indiquée ci-dessus, le nom revient à tout élément dans la syntaxe décrite pour noms, bien qu'en utilisant l'opérateur de résolution de portée avant qu'il n'autorise pas le nom, types de noms qui peuvent se produire uniquement dans une classe.Cela inclut les noms de fonctions définis par l'utilisateur de conversion, et les noms de destructeur.

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 + // an global operator function
::A::B // a global qualified name
( i + 1 ) // a parenthesized expression

Les exemples suivants sont des nomsconsidérés comme, et par conséquent des expressions primaire, différentes formes :

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

Voir aussi

Référence

Types d'expressions