我是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;
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;