Compartilhar via


Expressões primárias

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

literal
this
:: name
name 
( expression )

A literal é uma expressão primária constante.Seu tipo depende da forma de sua especificação.Consulte literais para obter informações completas sobre como especificar literais.

O Este palavra-chave é um ponteiro para um objeto de classe.Ele está disponível dentro de funções de membro não estático e aponta para a instância da classe para o qual a função foi chamada.O Este palavra-chave não pode ser usado fora do corpo de uma função de membro de classe.

O tipo da Este ponteiro é type*** const** (onde type é o nome de classe) dentro de funções não especificamente modificando o Este ponteiro. O exemplo a seguir mostra o membro de declarações de função e os tipos de Este:

// expre_Primary_Expressions.cpp
// compile with: /LD
class Example
{
public:
    void Func();          //  * const this
    void Func() const;    //  const * const this
    void Func() volatile; //  volatile * const this
};

Consulte tipo de ponteiro this para obter mais informações sobre como modificar o tipo da Este ponteiro.

O operador de escopo de resolução (::) seguido de um nome constitui uma expressão primária.Esses nomes devem ser nomes de escopo global, não os nomes de membros.O tipo dessa expressão é determinado pela declaração de nome.Ele é um valor de l (ou seja, ele pode aparecer no lado esquerdo de uma expressão do operador de atribuição) se o nome de declaração é um l-value.O operador de escopo de resolução permite que um nome global sejam referidas, mesmo se esse nome está oculto no escopo atual.Consulte escopo para obter um exemplo de como usar o operador de escopo de resolução.

Uma expressão entre parênteses é uma expressão primária cujo tipo e valor é idêntica da expressão unparenthesized.Ele é um l-value, se a expressão de unparenthesized é um l-value.

No contexto da sintaxe da expressão primária fornecido acima, nome significa que qualquer coisa na sintaxe descrito para nomes de, embora ao usar o operador de escopo de resolução antes do nome, os tipos de nomes que só podem ocorrer em uma classe não são permitidos.Isso inclui nomes de função de conversão definida pelo usuário e destruidor.

Exemplos de expressões primárias:

100 // literal
'c' // literal
this // in a member function, a pointer to the class instance
::func // a global function
::operator + // an global operator function
::A::B // a global qualified name
( i + 1 ) // a parenthesized expression

Os exemplos abaixo são considerados nomes dee, portanto, principais expressões, de várias formas:

MyClass // a identifier
MyClass::f // a qualified name
operator = // an operator function name
operator char* // an converstion operator function name
~MyClass // a destructor name
A::B   // a qualified name
A<int> // a template id

Consulte também

Referência

Tipos de expressões