代码展示
class A
{
private:
int &a;
public:
A(int k,int n) :a(n) {
cout << a << endl; //可以正确输出
}
int get_a()
{
cout << a << endl; //出现未知地址
return 0;
}
};
int main()
{
A a(10,20);
a.get_a();
system("pause");
return 0;
}
结果分析
a绑定到局部变量 n上 (即n 的别名) 当A()函数的结束之后 n的生命周期结束 导致a绑定的变量n不再存在 所以出现这样情况
解决方案
扩大 n 的生命周期
public:
int n;
A(int k) :a(n) {
n = k;
cout << a << endl;
}
int get_a()
{
cout << a << endl;
return 0;
}