当前位置:  开发笔记 > 编程语言 > 正文

为什么int&r = 0是非法的而const int&r = 0是合法的?

如何解决《为什么int&r=0是非法的而constint&r=0是合法的?》经验,为你挑选了1个好方法。

我是C++的新手.我正在努力学习const的概念.有人可以告诉我为什么第一个声明是非法的,而第二个是合法的?

int i = -1, &r = 0;         

const int i = -1, &r = 0;  

M.M.. 7

i这是一个红鲱鱼,问题是int &r = 0;对比const int &r = 0;

非const左值引用必须直接绑定到左值.0不是左值,所以int &r = 0;失败了.

const值左侧引用可以绑定到右值.发生这种情况时,它不会直接绑定.相反,创建临时(const int此处为类型)并从rvalue复制初始化.由于这种约束,临时使其寿命延长.

因此const int &r = 0;是合法的并且具有类似的效果const int __temp = 0; const int &r = __temp;



1> M.M..:

i这是一个红鲱鱼,问题是int &r = 0;对比const int &r = 0;

非const左值引用必须直接绑定到左值.0不是左值,所以int &r = 0;失败了.

const值左侧引用可以绑定到右值.发生这种情况时,它不会直接绑定.相反,创建临时(const int此处为类型)并从rvalue复制初始化.由于这种约束,临时使其寿命延长.

因此const int &r = 0;是合法的并且具有类似的效果const int __temp = 0; const int &r = __temp;


注意:我故意使用双下划线来表示这是伪代码
推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有