关于C++的静态数据成员

静态数据成员和带const修饰的静态数据成员分别什么时候被初始化,求解答一下。

①静态常量数据成员可以在类内初始化(即类内声明的同时初始化),也可以在类外,即类的实现文件中初始化,不能在构造函数中初始化,也不能在构造函数的初始化列表中初始化;
②静态非常量数据成员只能在类外,即类的实现文件中初始化,也不能在构造函数中初始化,不能在构造函数的初始化列表中初始化;

参照:http://blog.csdn.net/whz_zb/article/details/6875639

说简单点,就是在执行main函数里第一行代码之前

静态数据成员必须在类外初始化,因为静态数据成员不属于对象,所以不能在构造函数里面初始化。
有一个例外,静态int型可以就地初始化。
一般const成员仍然是一般成员,它在实例化对象的时候被创建,不能提前初始化,因为还没有对象,
然而它又是个const,不能滞后初始化,不能在构造对象的时候给它赋值,所以只能在初始化列表里面初始化。
static const和const static一样,可以就地初始化,也可以类外初始化。