为什么const必须在这里?

时间:2017-06-15 14:17:20

标签: c++

在某种程度上直观地说明为什么const在这里是必要的,因为这个数字并没有真正获得一个地方所以你不能通过引用传递它,但是有一个更正式的解释

#include <iostream>

int number()
{
    return 8;
}

int greet(const int& q)
{
    std::cout << "HI!";
    return q;
}

int main()
{
    return greet(number());
}

1 个答案:

答案 0 :(得分:0)

通常情况下,你会通过值传递,因为整数的复制成本很低并且具有值语义。

表达式number()右值(特别是 prvalue ),因此您无法将其与非const引用绑定。您可以通过复制它来使用右值,并且允许使用const引用进行绑定。

Const引用是特殊的,因为它们以非const引用的方式延长对象的生命周期。这就是关键所在。