再探常量静态成员的初始化
接着这个帖子:
http://community.csdn.net/Expert/topic/4432/4432789.xml?temp=.4075128
再来一个例子:
int regi()
{
return 5;
}
class mytestclass
{
public:
const static int i = regi(); //这是一个类里面的常数静态变量(注意:这种语法可能只能在cs2003上编译通过)
};
const static int gi = regi(); //这是一个全局的常数静态变量
int main()
{
std::cout<<mytestclass::i<<std::endl; // 这个变量实际上并未赋值,输出为0
std::cout<<gi<<std::endl; // 这个变量已经赋值,输出为5
return 0;
}
我们知道对于静态变量(不论是类中的或者是全局的)都应该是在main之前进行初始化操作的,那么为什么得到了不同的结果呢?
难道编译器不应该将这两种变量的初始化统一对待?