什么是错的这段代码,为什么会出现错误的答案: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