主表达式

主表达式是生成块更复杂的表达式。 它们是标识符、范围解析运算符限定名和名称 (::)。 主表达式可以具有以下形式的任何一个:

literal
this
:: name
name 
( expression )

文本 为常量主要表达式。 其类型取决于其规范的窗体。 请参见 文本 有关指定文本的完整信息。

关键字是指向类的对象。 它在非静态成员函数内可用的并指向函数调用类的实例。 关键字不能在类成员函数的主体外使用。

指针的类型是在不专门修改 指针的函数中 type *const (其中 type 是类名)。 下面的示例演示成员函数声明和 的类型:

// 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
};

请参见 此指针的类型 有关修改 指针类型的更多信息。

名称 (::) 及后跟的范围解析运算符组合主表达式。 此类名称必须是名称在全局范围内,而不是成员名称。 此表达式的类型取决于该名称的声明。 它是左值 (即它可以出现在赋值运算符左侧表达式的并行),如果该声明的名称是左值。 范围解析运算符允许全局名称引用,因此,即使该名称在当前范围隐藏。 为的示例演示如何参见 范围 使用范围解析运算符。

在小括号的表达式是类型和值与相同的该 unparenthesized 表达式的主表达式。 ,如果该 unparenthesized 表达式是左值,它是左值。

在给定的主要表达式语法上面上, 名称 意味着任何内容。对于 名称描述的语法,不过,,当使用范围解析运算符在名称前时,在类只能出现名称的类型不允许的。 这包括用户定义的转换函数名称和析构函数名称。

主表达式的示例包括:

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

下面的示例是所有考虑的 名称主要表达式,以各种形式:

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

请参见

参考

表达式的类型