Wyrażenia podstawowe
Wyrażenia podstawowe są blokami konstrukcyjnymi bardziej złożonych wyrażeń.Są one literały, nazwy i nazwy kwalifikowanej przez podmiot gospodarczy zakres rozdzielczości (::).Wyrażenie podstawowy może mieć jedną z następujących form:
literal
this
:: name
name
( expression )
A literału jest podstawowym wyrażeniem stałym.Jego typ zależy od formularza jej specyfikację.Zobacz literały Aby uzyskać pełne informacje o określaniu literałów.
To słowo kluczowe jest wskaźnik do obiektu klasy.Jest ona dostępna w ramach funkcji niestatycznego członka i punkty do instancji klasy, dla którego wywołano funkcję.To poza ciałem funkcji składowej klasy nie można użyć słowa kluczowego.
Typ to wskaźnik jest type*** const** (gdzie type jest nazwą klasy) wewnątrz funkcji nie jest konkretnie modyfikowanie to wskaźnik. Poniższy przykład przedstawia Członkowskich deklaracje funkcji i rodzajów to:
// 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 typu tego wskaźnika Aby uzyskać więcej informacji dotyczących modyfikowania typu to wskaźnik.
Operator zakresu rozdzielczość (::) następuje nazwa stanowi podstawowy wyrażenie.Takie nazwy muszą być nazwy w zakresie globalnym, a nie nazwy składników.Typy to wyrażenie jest określane przez deklarację nazwę.Jest wartością l (to znaczy, że może być wyświetlany na lewej stronie wyrażenia operatorem przypisania) jeśli deklarujący nazwa jest l wartość.Operator zakresu rozdzielczości pozwala globalnego nazwę mowa, nawet, jeśli nazwa ta jest ukryta w bieżącym zakresie.Zobacz zakres na przykład można użyć operatora zakres rozdzielczości.
Wyrażenie w nawiasach jest podstawowym wyrażenie, którego typ i wartość są identyczne z tymi wyrażenie unparenthesized.Jeśli wyrażenie unparenthesized jest wartością l jest l wartość.
W kontekście składni wyrażeń podstawowych podane powyżej Nazwa oznacza coś w składni opisane dla nazwy, chociaż za pomocą operatora zakres rozdzielczości przed nazwą, typów nazw, które mogą występować wyłącznie w klasa nie jest dozwolone.Obejmuje to nazwy funkcja zdefiniowana przez użytkownika konwersja i nazwy destruktor.
Wyrażenia podstawowe przykłady:
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
Poniższe przykłady są pod uwagę wszystkie nazwyi stąd podstawowego wyrażenia, w różnych formach:
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