Udostępnij za pośrednictwem


Wyrażenia podstawowe

Wyrażenia podstawowe są blokami konstrukcyjnymi bardziej złożonych wyrażeń.Są to literały, nazwy i nazwy kwalifikowane przez operator rozpoznawania zakresu (::). Wyrażenie podstawowe może mieć jedną z następujących form:

literal 
this
:: name 
name  
( expression )

Literał jest podstawowym wyrażeniem stałym.Jego typ zależy od postaci jego specyfikacji.Zobacz literały, aby uzyskać wyczerpujące informacje na temat określania literałów.

Słowo kluczowe this jest wskaźnikiem do obiektu klasy.Jest on dostępny w ramach funkcji niestatycznego elementu członkowskiego i wskazuje na wystąpienie klasy, dla której wywołano funkcję.Słowa kluczowego this nie można użyć poza ciałem funkcji elementu członkowskiego klasy.

Typ wskaźnika this to type *const (gdzie type jest nazwą klasy) w funkcjach, które nie modyfikują szczególnie wskaźnika this.W poniższym przykładzie pokazano deklaracje funkcji elementów członkowskich i typy this:

// 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
};

Zobacz Typ wskaźnika this, aby uzyskać więcej informacji o modyfikowaniu typu wskaźnika this.

Operator rozpoznawania zakresu (::), po którym następuje nazwa, stanowi wyrażenie podstawowe. Nazwy te muszą być nazwami w zakresie globalnym, a nie nazwami elementów członkowskich. Typ tego wyrażenia zależy od deklaracji nazwy.Jest to wartość l (to znaczy, że może być wyświetlany na lewej stronie wyrażenia operatora przypisania), jeśli nazwa deklarująca to wartość l.Operator rozpoznawania zakresu umożliwia odwoływanie się do globalnej nazwy, nawet jeśli ta nazwa jest ukryta w bieżącym zakresie.Zobacz Zakres, aby uzyskać przykład, jak używać operatora rozpoznawania zakresu.

Wyrażenie w nawiasach jest wyrażeniem podstawowym, którego typ i wartość są identyczne jak wyrażenia bez nawiasów.Jest to wartość l, jeśli wyrażenie bez nawiasów jest wartością l.

W kontekście składni wyrażenia podstawowego podanej powyżej, nazwa oznacza cokolwiek w składni opisane dla nazw, choć w przypadku użycia operatora rozpoznawania zakresu przed nazwą, typy nazw, które mogą występować tylko w klasie, nie są dozwolone. Obejmuje to zdefiniowane przez użytkownika nazwy funkcji konwersji i nazwy destruktorów.

Przykłady wyrażeń podstawowych:

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

Wszystkie poniższe przykłady są uznawane jako nazwy, a więc wyrażenia podstawowe, w różnych formach:

MyClass // a 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

Zobacz też

Informacje

Typy wyrażeń