sky*_*oor 9 c++ reference rvalue lvalue const-reference
任何人都可以向我解释为什么这两个陈述之间存在差异?
class A{};
const A& a = A(); // correct
A& b = A(); // wrong
Run Code Online (Sandbox Code Playgroud)
它表示类型A&的临时类型的非const引用的无效初始化A
为什么const这里很重要?
Pet*_*der 14
必须使用l值初始化非const引用.如果你可以用临时工具初始化它们,那么下面会做什么呢?
int& foo = 5;
foo = 6; // ?!
Run Code Online (Sandbox Code Playgroud)
const引用具有延长裁判员生命的特殊属性,因为它们是const,所以你不可能尝试修改不在记忆中的东西.例如:
const int& foo = 5;
foo = 6; // not allowed, because foo is const.
Run Code Online (Sandbox Code Playgroud)
请记住,引用实际上必须引用某些东西,而不仅仅是临时变量.例如,以下内容有效:
int foo = 5;
int& bar = foo;
bar = 6;
assert(foo == 6);
Run Code Online (Sandbox Code Playgroud)