有人能解釋我這個代碼是怎麼回事。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