将非常量左值引用绑定到不同类型
在 C 中,非常量左值引用必须绑定到相同类型的左值类型。当尝试将临时对象绑定到非常量引用时,这可能会令人困惑,如以下示例所示:
int a; const double &m = a; // This is allowed double &m = a; // This produces an error
错误“对类型‘double’的非常量左值引用无法绑定”到不相关类型“int”的值,”表示非常量类型的引用不能绑定到不同类型的对象。
此限制的原因是临时对象不能绑定到非常量引用。当 a 转换为 double 时,会创建一个临时对象。结果,出现以下代码行:
double &m = a;
尝试将非常量引用绑定到临时对象,这是不允许的。
但是,有一个例外Visual Studio 中的此规则,其中编译器扩展允许将非常量引用绑定到临时对象。然而,这种行为并不标准,并且会导致 GCC 等其他编译器出现错误。
以上是为什么非常量左值引用不能绑定到 C 中的不同类型?的详细内容。更多信息请关注PHP中文网其他相关文章!