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
}