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

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

当我调试时, toString 指的是一个地址,而不是 NULL。但是,如果我static ToStringDisplay* toString;改为声明, toString 指的是 NULL 吗?它们之间有什么区别?

4

2 回答 2

2

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

于 2013-03-31T16:14:15.270 回答
1

静态成员变量根据http://www.learncpp.com/cpp-tutorial/811-static-member-variables/初始化为零,其中所有其他变量都未定义,除非您明确初始化它们,因此它们将具有任​​何随机值那是以前记忆中的。有关静态和非静态有什么区别的解释,请参见上面的链接。

于 2013-03-31T16:19:14.007 回答