首页 >后端开发 >C++ >为什么非常量引用不能绑定到 C 中不同类型的左值?

为什么非常量引用不能绑定到 C 中不同类型的左值?

Patricia Arquette
Patricia Arquette原创
2024-11-23 04:30:20710浏览

Why Can't Non-Const References Bind to Lvalues of Different Types in C  ?

将非常量引用绑定到不同类型的左值

在 C 中,非常量左值引用 (&) 不能绑定到不同类型的左值,如示例所示下面:

int a;
double &m = a; // Error: non-const lvalue reference cannot bind to an lvalue of different type

这是因为非常量引用 m 尝试绑定到赋值期间创建的临时对象。非常量引用不能绑定到临时变量。

但是,请考虑以下示例:

const double &m = a; // Valid

在这种情况下,常量引用 m 绑定到非常量左值,并且允许从 int 到 double 的转换。这是因为 const 引用可以保护底层值不被修改,从而消除了将非常量引用绑定到临时值时可能出现的数据损坏的可能性。

因此,当您尝试绑定非 const 引用时, const 引用不同类型的左值,由于非常量引用无法绑定到临时变量,因此会发生错误。

以上是为什么非常量引用不能绑定到 C 中不同类型的左值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn