Expressões primárias
As expressões primárias são os blocos de construção de expressões mais complexas. Elas são literais, nomes e nomes qualificados pelo operador de resolução de escopo (::
). Uma expressão primária pode ter qualquer uma das seguintes formas:
primary-expression
literal
this
name
::
name
(
expression
)
Um 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, confira Literais.
O teclado this
é um ponteiro para uma instância da classe. Ela está disponível nas funções membro não estáticas e aponta para a instância da classe na qual a função foi invocada. A palavra-chave this
não pode ser usada fora do corpo de uma função membro de classe.
Para obter mais informações sobre o tipo do ponteiro this
, confirathis
ponteiro.
O operador de resolução de escopo (::
) seguido por um nome é uma expressão primária. Tais nomes devem estar no escopo global, não em nomes de membro. A declaração do nome determina o tipo da expressão. Será um l-value (isto é, pode aparecer à esquerda de uma expressão de atribuição) se o nome declarativo for um l-value. O operador de resolução de escopo permite que um nome global seja referenciado, mesmo se esse nome estiver oculto no escopo atual. Confira 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 seu valor são idênticos ao tipo e ao valor da expressão que não está entre parênteses. Será um l-value se a expressão fora dos parênteses for um l-value.
Os 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
Estes exemplos são todos considerados names, portanto, expressões primárias, em vários formulários:
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
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de