Wyrażenia podstawowe

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

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

A literal jest stałym wyrażeniem podstawowym. Jego typ zależy od postaci jego specyfikacji. Aby uzyskać więcej informacji na temat określania literałów, zobacz Literały .

Słowo this kluczowe jest wskaźnikiem do wystąpienia klasy. Jest ona dostępna w funkcjach niestatycznych składowych i wskazuje wystąpienie klasy, z którego została wywołana funkcja. Słowo this kluczowe nie może być używane poza treścią funkcji składowej klasy.

Aby uzyskać więcej informacji na temat typu this wskaźnika, zobacz this wskaźnik.

Operator rozpoznawania zakresu (::), po którym następuje nazwa, jest wyrażeniem podstawowym. Nazwy te muszą być nazwami w zakresie globalnym, a nie nazwami elementów członkowskich. Deklaracja nazwy określa typ wyrażenia. Jest to wartość l (czyli może pojawić się po lewej stronie wyrażenia przypisania), jeśli nazwa deklarowana jest wartością 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 zapoznać się z przykładem użycia operatora rozpoznawania zakresu.

Wyrażenie ujęte w nawiasy jest wyrażeniem podstawowym. Jego typ i wartość są identyczne z typem i wartością nieparentezowanego wyrażenia. Jest to wartość l, jeśli nieparentezowane wyrażenie jest wartością l.

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 te przykłady są uznawane za nazwy i jako takie wyrażenia podstawowe w różnych formach:

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

Zobacz też

Typy wyrażeń