类成员声明语法

通常,按照声明规则来声明类数据成员和函数成员。它们按此顺序包含:

  • 声明说明符。在类中,数据成员可以使用存储类说明符 staticmutable。数据和函数成员可以使用 cv 限定符 const 和 volatile。函数可以使用声明说明符 friend、staticvirtualinline,但 friend 指示非成员函数。

  • 没有初始值设定项的声明符。对于虚函数,形式为 = 0 的纯说明符在函数声明符后使用以指定纯虚函数(一个在该类中未实现的虚函数)。

  • (可选)位域。请参阅位域。

OR

  • 函数定义。函数的定义可包含在类中。如果如此定义成员函数,则会自动将其视为内联。

OR

成员数据不能声明为 auto、extern 或 register 存储类。 但可将其声明为具有 static 存储类。

在成员列表中声明 friend 类时,您可以忽略成员声明符列表。 有关友元的详细信息,请参阅友元说明符友元。 即使尚未引入类名,它也可用于 friend 声明中。 此 friend 声明引入该名称。 但是,在此类的成员声明中,必须使用详细类型说明符语法,如下面的示例所示:

// class_member_declaration_syntax.cpp
// compile with: /c
struct HasFriends {
   friend class NotDeclaredYet;
};

在前面的示例中,类声明后没有成员声明符列表。 由于未处理 NotDeclaredYet 的声明,因此将使用详细类型说明符形式:class NotDeclaredYet。 可以使用正常类型说明符在 friend 成员声明中指定已声明的类型:

// class_member_declaration_syntax2.cpp
// compile with: /c
struct AlreadyDeclared {};

struct HasFriends {
   friend AlreadyDeclared;
};

纯说明符(如下面的示例所示)指示没有为将声明的虚函数提供实现。 因此,只能在虚函数上指定纯说明符。 请看以下示例:

// class_member_declaration_syntax3.cpp
// compile with: /c
class StrBase {   // Base class for strings.
public:
   virtual int IsLessThan( StrBase& ) = 0;
   virtual int IsEqualTo( StrBase& ) = 0;
   virtual StrBase& CopyOf( StrBase& ) = 0;
};

前面的代码声明抽象基类 - 即,一个仅用作多个特定类的基类的类。 此基类可通过使用纯说明符将一个或多个虚函数声明为“纯”虚函数,从而实施特定协议或功能集。

从 StrBase 类继承的类必须为纯虚函数提供实现;否则,它们也将被视为抽象基类。

抽象基类不能用于声明对象。 例如,必须先实现函数 IsLessThan、IsEqualTo 和 CopyOf,然后才能声明从 StrBase 继承的类型的对象。(有关抽象基类的详细信息,请参阅抽象类。)

请参见

参考

类成员