Expressões primárias

Expressões primárias são os blocos de construção de expressões mais complexas. Eles podem ser literais, nomes e nomes qualificados pelo operador de resolução de escopo (::). Uma expressão primária pode ter qualquer um dos seguintes formulários:

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

A literal é uma expressão primária constante. Seu tipo depende da forma de sua especificação. Para obter mais informações sobre como especificar literais, consulte Literais .

A this palavra-chave é um ponteiro para uma instância da classe. Ele está disponível em funções de membro não estático e aponta para a instância da classe da qual a função foi invocada. A this palavra-chave não pode ser usada fora do corpo de uma função de membro de classe.

Para obter mais informações sobre o tipo do ponteiro, consulte thiso this ponteiro.

O operador de resolução de escopo (::) seguido de um nome é uma expressão primária. Esses nomes devem ser nomes no escopo global, não nomes de membro. A declaração do nome determina o tipo da expressão. É um l-value (ou seja, pode aparecer no lado esquerdo de uma expressão de atribuição) se o nome de declaração for um l-value. O operador de resolução de escopo permite que um nome global seja referenciado, mesmo que esse nome esteja oculto no escopo atual. Consulte Escopo para obter um exemplo de como usar o operador de resolução de escopo.

Uma expressão entre parênteses é uma expressão primária. Seu tipo e valor são idênticos ao tipo e ao valor da expressão nãoparemensionada. Será um l-value se a expressão nãoparenthesized for um l-value.

Exemplos de expressões primárias incluem:

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

Esses exemplos são todos nomes considerados e, como tal, expressões primárias, em várias 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 também

Tipos de expressões