错误:非常量引用绑定到 Visual Studio 中的临时对象
将临时对象分配给非常量对象时,GCC 会引发错误参考。令人惊讶的是,Visual Studio 允许这样做。为什么会出现差异?
解释在于 Visual Studio 中的旧扩展。正如错误报告中所述:“临时对象可以绑定到非常量引用”,Visual Studio 允许将临时对象绑定到非常量引用,即使这可能会导致未定义的行为。
This行为一直备受争议。对错误报告的一个回复指出,此错误有一个 4 级警告,可以使用“/W4”编译器标志启用该警告。
但是,有一种方法可以在 Visual 中将此错误设为错误Studio:使用“/Za”标志禁用语言扩展。如果您想遵守严格的 C 标准并避免潜在有问题的代码行为,这是一个有用的解决方法。
为了说明这一点,请考虑以下示例:
class Zebra { int x; }; Zebra goo() { Zebra z; return z; } void foo(Zebra &x) { Zebra y; x = y; foo(goo()); // Error in GCC, allowed in Visual Studio }
在 Visual Studio 中,此代码将编译没有错误。然而,在 GCC 中,由于临时对象被分配给非常量引用,会产生编译错误。
以上是为什么 Visual Studio 允许非常量引用绑定到临时对象,而 GCC 不允许?的详细内容。更多信息请关注PHP中文网其他相关文章!