有人可以向我解释为什么这两个陈述之间有区别吗?
class A{};
const A& a = A(); // correct
A& b = A(); // wrong
它说
从
A&
类型的临时目录无效初始化了A
类型的非常量引用为什么
const
在这里很重要? 最佳答案
非常量引用必须使用l值初始化。如果您可以用临时实例初始化它们,那么下面的方法是什么?
int& foo = 5;
foo = 6; // ?!
const
引用具有特殊的属性,它们可以延长裁判的生命周期,并且由于它们是const
,因此您不可能尝试修改内存中没有的内容。例如:const int& foo = 5;
foo = 6; // not allowed, because foo is const.
请记住,引用实际上必须引用某些内容,而不仅仅是临时变量。例如,以下内容有效:
int foo = 5;
int& bar = foo;
bar = 6;
assert(foo == 6);