主な式は、より複雑な式の構成要素です。 これらは、スコープ解決演算子 (::) によって修飾されたリテラル、名前、および名前である場合があります。 プライマリ式には、次のいずれかの形式を使用できます。
primary-expression
literal
this
name
::
name
(
expression
)
literalは定数のプライマリ式です。 その型は、その仕様の形式によって異なります。 リテラルの指定の詳細については、「リテラル 」を参照 してください。
this キーワードは、クラスのインスタンスへのポインターです。 非静的メンバー関数内で使用でき、関数が呼び出されたクラスのインスタンスを指します。
this キーワードは、クラス メンバー関数の本体の外部では使用できません。
this ポインターの型の詳細については、ポインターthis参照してください。
スコープ解決演算子 (::) の後に名前が続く 1 次式です。 このような名前は、メンバー名ではなく、グローバル スコープの名前である必要があります。 名前の宣言によって、式の型が決まります。 宣言名が l 値の場合は、l 値 (つまり、代入式の左側に表示される可能性があります) です。 スコープ解決演算子を使用すると、その名前が現在のスコープで非表示になっている場合でも、グローバル名を参照できます。
スコープ解決演算子の使用方法の例については、「スコープ」を参照してください。
かっこで囲まれた式は、プライマリ式です。 その型と値は、未解析式の型と値と同じです。 未解析の式が l 値の場合は l 値です。
主な式の例を次に示します。
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
これらの例はすべて 名前と見なされ、さまざまな形式でプライマリ式と見なされます。
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