Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las expresiones principales 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 principal puede tener cualquiera de las formas siguientes:
primary-expression
literal
this
name
::
name
(
expression
)
A literal es una expresión principal 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 this palabra clave no se puede usar 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 principal. Estos nombres deben ser nombres en el ámbito global, no nombres de miembros. 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 declarado es un valor l. El operador de resolución de ámbito permite hacer referencia a un nombre global, incluso si ese nombre está oculto en el ámbito actual. Consulte Ámbito para obtener un ejemplo de cómo usar el operador de resolución de ámbito.
Una expresión entre paréntesis es una expresión principal. Su tipo y valor son idénticos al tipo y el valor de la expresión noparenthesized. Es un valor l si la expresión noparenthesizada es un valor l.
Entre los ejemplos de expresiones principales 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 son todos los nombres considerados y, como tal, expresiones principales, en varias 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