在某种程度上直观地说明为什么const
在这里是必要的,因为这个数字并没有真正获得一个地方所以你不能通过引用传递它,但是有一个更正式的解释
#include <iostream>
int number()
{
return 8;
}
int greet(const int& q)
{
std::cout << "HI!";
return q;
}
int main()
{
return greet(number());
}
答案 0 :(得分:0)
通常情况下,你会通过值传递,因为整数的复制成本很低并且具有值语义。
表达式number()
是右值(特别是 prvalue ),因此您无法将其与非const引用绑定。您可以通过复制它来使用右值,并且允许使用const引用进行绑定。
Const引用是特殊的,因为它们以非const引用的方式延长对象的生命周期。这就是关键所在。