什麼是錯的這段代碼,爲什麼會出現錯誤的答案:C++的構造函數:垃圾而常引用初始化
class X
{
private:
const int a;
const int& b;
public:
X(): a(10) , b(20)
{
// std::cout << "constructor : a " << a << std::endl;
// std::cout << "constructor : b " << b << std::endl;
}
void display()
{
std::cout << "display():a:" << a << std::endl;
std::cout << "display():b:" << b << std::endl;
}
};
int
main(void)
{
X x;
x.display();
return 0;
}
上面的代碼給我結果作爲
display():a:10
display():b:1104441332
但如果我刪除默認的構造函數中的註釋2線它給了我正確的結果是
constructor : a 10
constructor : b 20
display():a:10
display():b:20
請幫助,謝謝
感謝您的回答。這解釋了結果。但我可以知道如何初始化b? – 2012-02-04 07:16:02
@VivekBasappa:讓它引用一些變量,就像你打算的那樣。或者,只需將它設置爲「a」的值即可。 – 2012-02-04 07:18:01
@VivekBasappa它是一個'int',所以你可能不希望它成爲一個參考。 '鼻涕像複製一個'int'是昂貴的。 – Borealid 2012-02-04 07:18:44