为什么可以进行这种绑定
int main()
{
double d = 4.56;
const int &r = d;
return 0;
}
但这不是
int main()
{
double d = 4.56;
int &r = d;
return 0;
}
谁能解释我,而第一个编译时却显示错误
绑定到转换后的类型(必须将double
转换为int
)时,会得到prvalue,因为转换后的int
是临时的,在内存中没有地址。因此,将常规引用绑定到它不起作用,因为它们只能绑定到glvalues。 const
类型引用可以绑定到prvalue,因此第一个仍然可以编译。来源:https://en.cppreference.com/w/cpp/language/value_category