代码如下
struct A
{
int &cnt;
A(int i=10):cnt(i){} //这里的 i 不是引用传参
A(const A &a):cnt(a.cnt){cnt++;}
};
int main()
{
A a1(100);
cout<<a1.cnt<<' '; // 输出100
A a2 (a1);
cout<<a1.cnt<<' '<<a2.cnt<<endl; //输出两个相同的随机数
a2.cnt=0;
cout<<a1.cnt<<' '<<a2.cnt<<endl; //输出 0 0
}
输出为
32766 32766
1 1
。
原本是想在struct A中定义一个引用成员,让A的多个对象共同对cnt进行操作,奇怪的是上面的初始化出了问题,但把cnt重新赋值后,后面的操作就正常了,有大佬能解释一下为什么会有这种现象吗