非常简单的程序,但是有令小弟我迷惑不解的结果

非常简单的程序,但是有令我迷惑不解的结果!
#include <iostream>
#include <string>

using namespace std;

class Test
{
public:
Test(int a):pi(a){}
int &pi;
};

int main()
{
int b=2;
Test t(b);
cout<<t.pi<<endl;

return 0;
}





输出结果为什么是一个看不懂的数据啊?
求大神给解释一个下了!

谢谢了!

------解决方案--------------------
C/C++ code
Test(int a):pi(a){}

------解决方案--------------------
因为你这个引用是引用了一个临时对象
Test(int a):pi(a){}
这个函数一结束 这里的临时对象a就被销毁了,所以结果不确定
------解决方案--------------------
Test(int a):a是一个临时变量构造完毕后,a已经不存在了,但你仍然试图使用pi访问它,于是发生了错误
改成:Test(int& a)即可
------解决方案--------------------
LZ可以结贴了