以上代码在VC6下编译出错,信息如下:
C:/Program Files/Microsoft Visual Studio/MyProjects/2/1.cpp(390) : error C2252: 'count' : pure specifier can only be specified for functions
C:/Program Files/Microsoft Visual Studio/MyProjects/2/1.cpp(402) : error C2065: 'count' : undeclared identifier
然而,《C++ Primer》第四版401页中说:
一般而言,类的static成员,像普通数据成员一样,不能在类的定义体中初始化。相反,static成员通常在定义时才初始化。
这个规则的一个例外是,只要初始化式是一个常量表达式,整型const static 成员就可以在类的定义体中进行初始化。
但是,在VC2003里编译该代码,pass.
应该算是VC6的又一个经典BUG了吧!
毕竟,目前的C++是在1999年制定,2003年小修改了一下,而vc++6.0是在98年发布的 ,可以原谅吧!
Effective C++似乎也提到过这个问题!