共用方式為


主要運算式

主要運算式為更複雜運算式的建置組塊。 它們是常值、名稱,以及範圍解析運算子 (::) 所限定的名稱。主要運算式可以具有下列任何形式:

literal 
this
:: name 
name  
( expression )

literal 是常數主要運算式。 它的類型取決於其規格形式。 如需有關指定常值的完整資訊,請參閱常值

this 關鍵字是類別物件的指標。 它可在非靜態成員函式中使用,並且指向針對其叫用函式的類別執行個體。 this 關鍵字無法在類別成員函式的主體之外使用。

this 指標的類型在未具體修改 this 指標的函式內為 type *const (其中 type 是類別名稱)。 下列範例將示範成員函式宣告和 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
};

如需修改 this 指標類型的詳細資訊,請參閱 this 指標的類型

後面接的名稱的範圍解析運算子 (::) 會構成主要運算式。這類名稱必須是全域範圍的名稱,而不是成員名稱。這個運算式的類型是由名稱的宣告所決定。 如果宣告名稱是左值,它就是左值 (也就是說,它可以出現在指派運算子運算式左邊)。 範圍解析運算子允許參考全域名稱,即使該名稱在目前範圍中為隱藏狀態。 如需如何使用範圍解析運算子的範例,請參閱範圍

以括號括住的運算式為主要運算式,其類型和值與未以括號括住之運算式的類型和值相同。 如果未以括號括住的運算式為左值,它就是左值。

在上述主要運算式語法的內容中,name 表示語法中任何針對名稱描述的項目,不過,在名稱前面使用範圍解析運算子時,則不允許只能在類別中出現的名稱類型。這類名稱包括使用者定義的轉換函式名稱和解構函式名稱。

主要運算式的範例包括:

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

以下範例全都會視為各種形式的 name,也因此為主要運算式:

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

請參閱

參考

運算式的類型