Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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