我是C ++的新手。我正在尝试学习const的概念。有人可以告诉我为什么第一句话是非法的而第二句话是合法的吗?
int i = -1, &r = 0;
const int i = -1, &r = 0;
i
是一个红色的鲱鱼在这里,问题是int &r = 0;
对const int &r = 0;
非常量左值引用必须直接绑定到左值。0
不是左值,因此int &r = 0;
失败。
常量左值引用可以绑定到右值。发生这种情况时,它不会直接绑定。相反,将const int
创建一个临时(此处为类型)并从右值复制初始化。借助此绑定,可以延长临时项的寿命。
因此const int &r = 0;
合法,并具有与const int __temp = 0; const int &r = __temp;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句