类成员

类可以具有以下类型的成员:

备注

可使用称为访问说明符的关键字将类的成员列表分为 private、protected 和 public 部分。冒号 : 必须跟在访问说明符后面。这些部分不需要是连续的,也就是说,这些关键字中的任何一个都可能在成员列表中多次出现。关键字指定所有成员直到下一个访问说明符或右大括号的访问。

成员列表中的成员声明由分号 ; 分隔。请参阅类成员声明语法

成员列表的目的是:

  • 为给定类声明完整的成员集。

  • 指定与各个类成员关联的访问(公共、私有或受保护)。

在成员列表的声明中,只可以声明一次成员;再次声明成员将生成错误消息。 由于成员列表是一个完整的成员集,因此不能将成员添加到带有后续类声明的给定类。

成员声明符不能包含初始值设定项。 提供初始值设定项将生成错误消息,如以下代码所示:

// class_members1.cpp
// C2864 expected
class CantInit
{
public:
    long l = 7;       // Error: attempt to initialize
                      //  class member.
    static int i = 9; // Error: must be defined and initialized
                      // outside of class declaration.
};
int main()
{
}

由于非静态成员数据的单独实例是为给定类类型的每个对象创建的,因此初始化成员数据的正确方式是使用类的构造函数。(构造函数在构造函数中有述。)

对于给定类类型的所有对象,只有一个静态数据成员的共享副本。 必须在文件范围内定义静态数据成员并可在此范围内将其初始化。(有关静态数据成员的详细信息,请参阅静态数据成员。)以下示例演示如何执行这些初始化:

// class_members2.cpp
class CanInit
{
public:
    CanInit() { l = 7; } // Initializes l when new objects of type 
                         //  CanInit are created.
    long       l;
    static int i;
    static int j;
};

// i is defined at file scope and initialized to 15.
// The initializer is evaluated in the scope of CanInit.
int CanInit::i = 15;                                                       

// The right side of the initializer is in the scope 
// of the object being initialized
int CanInit::j = i;  

int main()
{
}

备注

类名 CanInit 的前面必须有 i 以指定所定义的 i 是类 CanInit 的成员。

Microsoft 专用

Microsoft C++ 允许在类定义中初始化静态整数、常量整数和常量枚举数据成员。 请参阅 Microsoft C 和 C++ 扩展

请参见

参考

类、结构和联合