如果我在注释下面的第13行时编译了代码,则会收到警告消息,提示它warning: 'test.Test::x' is used uninitialized in this function
,但是如果我在第13行中对其进行编译,则编译器不会警告Test: :x未初始化。
我的问题是:
当我在第13行中调用第7行时,为什么编译器没有警告我有关未初始化的变量x,如果x是在什么时候已经初始化的呢?
#include <iostream>
class Test
{
public:
int x;
void printX(){ std::cout << x << std::endl; } // ----------------line 7
};
int main()
{
Test test;
// test.printX(); // --------------------------------------------line 13
std::cout << test.x << std::endl;
return 0;
}
答案 0 :(得分:1)
如果不初始化,则未初始化。编译器会尽力帮助您指出您的错误,但并非总是可能的,您不能依靠这些错误。如果您使用最新版本的编译器,则会收到更好的警告。
如果x是在什么时候初始化的?
否,x未初始化。
答案 1 :(得分:-1)
您的问题确实令人困惑。不确定您要问什么。
无论如何,除非显式初始化原始数据类型,否则它们不会初始化。这些和POD。只需初始化所有数据成员即可。