1. C++98中支持所谓的“就地声明”的方式。所谓就地声明就是指 在类的声明中使用 等号 “=” 来初始化静态成员常量。但是在类中直接使用等号“=”来声明变量时,其要求是比较苛刻的。它必须满足2个条件,否则,编译失败。
(1)类中的该静态成员变量需要满足“常量性”,如果不满足静态变量常量性,则不可以进行就地声明。
(2)在(1)的基础上,还需要满足该静态常量成员必须是:整型或者是枚举类型。
上面2个条件都要同时满足,才能够进行就地初始化,否则,C++98都是不支持的。如代码1所示:
在linux上编译,g++版本号是:g++ (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
,编译时,除了变量d和g,其他都能够编译通过。这实际是GNU对C++的一个扩展,并不遵循C++的标准。
/******