C++语言程序设计

静态数据成员的初始化
静态数据成员的初始化必须在类外，例如：
class A
{
static int i;
public:
//……
};
静态数据成员i的初始化方法为："int A::i=1;"。可见：它与全局变量的初始化的方法的不同之处在于，有类名和作用域分隔符指定i的范围。
我们还可以定义静态的数组成员，例如：

| 例10-19

class Values
{
static const int size;
static const float table[4];
static char letters[5];
};
const int Values::size = 100;
const float Values::table[4] = {1.1, 2.2, 3.3, 4.4};
char Values::letters[5] = {'a', 'b', 'c', 'd', 'e'};
void main(){}

本例创建了静态的成员变量size，静态的数组成员table和letters。静态的数组成员的初始化方法与数组的初始化类似，但要有类名和作用域分隔符限制。
成员常量
我们先看下面一个实例：
class A
{
const size = 100; //illegal
int array[size]; //illegal
};
类A是想定义一个常量数组，但这个类的定义是错误的。因为定义类常量数据成员时，不能同时进行初始化。定义类时，只是说明类有那些数据成员，而不涉及到内存单元的分配，类数据成员存储单元的分配是在对象初始化时进行的。
我们也可以把常量数据成员定义成静态的，同静态成员变量初始化一样，静态成员常量初始化也在类外，例如：

| 例10-20

class A
{
static const int size;
int array[size];
public:
// ...
};
const int A::size = 100; //definition