background image

5}

但是,还有一些简单的例子则不会产生警告:

1
2
3
4
5
6
7
8
9
1
0

void increment(int 
&nValue) 

    ++nValue; 

int foo() 

    int nX; 
    increment(nX); 
    return nX; 
}

以上的代码片段可能不会产生一个警告,因为编译器一般不会去跟踪查看函
数 increment()到底有没有对 nValue 赋值。

未初始化变量更常出现于类中,成员的初始化一般是通过构造函数的实现来
完成的。

1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1

class Foo 

private: 
    int m_nValue; 
public: 
    Foo(); 
    int GetValue() { return m_bValue; } 
}; 
  
Foo::Foo() 

    // Oops, 我们忘记初始化 m_nValue

 


  
int main() 

    Foo cFoo; 
    if (cFoo.GetValue() > 0) 
        // do something 
    else
        // do something else 
}