次の方法で共有


一次式

基本式は、より複雑な式のビルド ブロックです。 つまり、リテラル、名前、スコープ解決演算子 (::) で修飾された名前です。基本式は次のいずれかの形式になります。

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 ポインターの型の変更の詳細については、「Type of this Pointer (this ポインターの型)」を参照してください。

名前の前のスコープ解決演算子 (::) は基本式です。そのような名前は、メンバー名ではなく、グローバル スコープでの名前であることが必要です。この式の型は名前の宣言によって決まります。 宣言名が左辺値である場合は、左辺値 (代入演算子式の左辺になる式) です。 スコープ解決演算子を使用すると、グローバル名が現在のスコープでは隠されていても、その名前を参照できます。 スコープ解決演算子の使用例については、「スコープ」を参照してください。

かっこで囲まれた式も基本式であり、その型と値はかっこで囲まれていない式のものと一致します。 この式は、かっこで囲まれていない式が左辺値であれば、左辺値です。

前に示している基本式の構文のコンテキストでは、name は「Names (名前)」で説明している構文で宣言されるいずれかの名前です。ただし、その名前の前にスコープ解決演算子を使用すると、クラス内にのみ出現する名前の型は受け入れられなくなります。このような名前には、ユーザー定義の変換関数やデストラクターの名前が該当します。

次に示しているのは、基本式の例です。

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

参照

関連項目

式の型