1. 尽管大多数对象可以通过运行适当的构造函数进行初始化,但是直接初始化简单的非抽象类的数据成员仍是可能的。对于没有定义构造函数并且其全体数据成员均为 public 的类,可以采用与初始化数组元素相同的方式初始化其成员(根据数据成员的声明次序来使用初始化式。):
    struct Data { int ival; char *ptr; };
    // val1.ival = 0; val1.ptr = 0
    Data val1 = { 0, 0 };

  2. 当我们在类的外部定义 static 成员时,无须重复指定 static 保留字,该保留字只出现在类定义体内部的声明处

  3. static 数据成员必须在类定义体的外部定义(正好一次)。不像普通数据成员, static 成员不是通过类构造函数进行初始化,而是应该在定义时进行初始化。保证对象正好定义一次的最好办法,就是将 static 数据成员的定义放在包含类非内联成员函数定义的文件中。

  4. 一般而言,类的 static 成员,像普通数据成员一样,不能在类的定义体中初始化。相反, static 数据成员通常在定义时才初始化。这个规则的一个例外是,只要初始化式是一个常量表达式,整型 const static 数据成员就可以在类的定义体中进行初始化。const static 数据成员在类的定义体中初始化时,该数据成员仍必须在类的定义体之外进行定义。在类内部提供初始化式时,成员的定义不必再指定初始值:

         // definition of static member with no initializer;
         // the initial value is specified inside the class definition
         const int Account::period;
  5. static 数据成员的类型可以是该成员所属的类类型。非 static 成员被限定声明为其自身类对象的指针或引用。类似地, static 数据成员可用作默认实参
posted on 2010-06-15 19:51  cppfans  阅读(90)  评论(0编辑  收藏  举报