首页 >后端开发 >C++ >为什么 Visual Studio 允许非常量引用绑定到临时对象?

为什么 Visual Studio 允许非常量引用绑定到临时对象?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-21 15:26:10282浏览

Why Does Visual Studio Allow Non-Const References to Bind to Temporary Objects?

Visual Studio 错误:非常量引用绑定到临时对象

给定的代码片段说明了在 Visual Studio 中观察到的特殊行为:

class Zebra {int x;};
Zebra goo() {Zebra z; return z;}
void foo(Zebra &x)
{
    Zebra y;
    x = y;
    foo(goo());
}

Visual Studio 允许此代码编译而不会出现错误,而 gcc 会引发编译错误。当使用 typedef 将 Zebra 表示为 int 时,此行为变得更加令人费解,因为 Visual Studio 随后会检测到该问题。

此行为是由旧的 Visual Studio 扩展驱动的。正如 Microsoft 错误报告“临时对象可以绑定到非常量引用”中所述,Visual Studio 允许将非常量引用绑定到临时对象。

但是,可以使用 / 禁用此扩展Za 编译器标志,这将使相关代码片段成为错误。此外,还可以使用 4 级警告(使用 /W4 启用)来标记此问题。

以上是为什么 Visual Studio 允许非常量引用绑定到临时对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

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