const类型的绑定如何在c ++中工作?

问题描述 投票:1回答:1

为什么可以进行这种绑定

int main()
{
    double d = 4.56;
    const int &r = d;

    return 0;
}

但这不是

int main()
{
    double d = 4.56;
    int &r = d;

    return 0;
}

谁能解释我,而第一个编译时却显示错误

c++ reference const
1个回答
0
投票

绑定到转换后的类型(必须将double转换为int)时,会得到prvalue,因为转换后的int是临时的,在内存中没有地址。因此,将常规引用绑定到它不起作用,因为它们只能绑定到glvalues。 const类型引用可以绑定到prvalue,因此第一个仍然可以编译。来源:https://en.cppreference.com/w/cpp/language/value_category

© www.soinside.com 2019 - 2024. All rights reserved.