静态与非静态变量C ++

时间:2013-03-31 15:52:09

标签: c++ static-variables

class Expression
{
    private:
       ToStringDisplay* toString;
    public:
        ......
};

   // Some code
   if (toString == NULL)
   // do something 

当我调试时,toString引用了一个地址,而不是NULL。 但是如果我改为声明static ToStringDisplay* toString;,toString引用NULL? 他们之间有什么不同?

2 个答案:

答案 0 :(得分:2)

作为C / C ++中的标准,如果没有另外说明,静态变量总是初始化为null。但是,对于非静态局部变量,没有这样的保证

答案 1 :(得分:1)

静态成员变量根据http://www.learncpp.com/cpp-tutorial/811-static-member-variables/初始化为零,其中所有其他变量都是未定义的,除非您明确初始化它们,因此它们将具有之前在内存中的任何随机值。有关静态和非静态差异的解释请参见上述链接。