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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题