有人能解释我这个代码是怎么回事。Visual Studio 2013 C++类属性初始化问题
class Point
{
private:
int x;
int y;
public:
Point(){}
void print(){
cout << x << " " << y << endl;
}
};
int main()
{
Point p;
p.print();
return 0;
}
如果我运行此代码输出是-858993460 -858993460女巫是正常的我。这是垃圾,因为我没有初始化我的2个属性。
下面是奇怪的事情......
class Point
{
private:
int x;
int y;
int* buf;
public:
Point(){}
void print(){
cout << x << " " << y << " " << buf << endl;
}
};
int main()
{
Point p;
p.print();
return 0;
}
现在,我把INT * BUF作为一类新的成员,当我运行此代码,我的所有属性都初始化为零。输出是0 0 00000000.我使用visual studio 2013,我不认为这种行为发生在Visual Studio 2010中。
有人可以解释背后的逻辑吗?
的问题是HTTP的副本:/ /stackoverflow.com/questions/3127454/how-do-c-class-members-get-initialized-if-i-dont-do-it-explyly – 2014-10-10 14:14:50
我知道构造函数在那里初始化类成员。我不认为这是巧合。我很确定这个奇怪的行为有一个解释。 – Joel 2014-10-10 16:09:16
C++规范声明它们将保持不确定的值。所以无论如何,这是不好的编程风格不适当初始化。 – 2014-10-11 09:02:28