lwqsbtl 2019-11-06 17:20 采纳率: 42.9%
浏览 924

C++ 类的引用成员初始化问题

代码如下

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重新赋值后,后面的操作就正常了,有大佬能解释一下为什么会有这种现象吗

  • 写回答

2条回答 默认 最新

  • zqbnqsdsmd 2019-11-06 22:34
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功