有人可以向我解释为什么这两个陈述之间有区别吗?

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);

07-24 09:46
查看更多