Expresiones primarias

Las expresiones primarias son los bloques de creación de expresiones más complejas. Pueden ser literales, nombres, y nombres calificados por el operador de resolución de ámbito (::). Una expresión primaria puede tener cualquiera de las formas siguientes:

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

Un literal es una expresión primaria constante. Su tipo depende de la forma de su especificación. Para obtener más información sobre cómo especificar literales, vea Literales .

La this palabra clave es un puntero a una instancia de la clase . Está disponible en funciones miembro no estáticas y apunta a la instancia de la clase desde la que se invocó la función. La palabra clave this no se puede utilizar fuera del cuerpo de una función miembro de clase.

Para obtener más información sobre el tipo del this puntero, vea this puntero.

El operador de resolución de ámbito (::) seguido de un nombre es una expresión primaria. Dichos nombres deben ser nombres en el ámbito global, no nombres de miembro. La declaración del nombre determina el tipo de la expresión. Es un valor L (es decir, puede aparecer en el lado izquierdo de una expresión de asignación) si el nombre de declaración es un valor L. El operador de resolución de ámbito permite que se haga referencia a un nombre global, incluso si ese nombre está oculto en el ámbito actual. Consulte Ámbito para obtener un ejemplo de cómo se utiliza el operador de resolución de ámbito.

Una expresión entre paréntesis es una expresión primara. Su tipo y valor son idénticos al tipo y el valor de la expresión sin parentesco. Es un valor L si la expresión no incluida entre paréntesis es un valor L.

Entre los ejemplos de expresiones primarias se incluyen:

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

Estos ejemplos se consideran nombres todos ellos, y por lo tanto son expresiones primarias, en diversas formas:

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

Consulte también

Tipos de expresiones