首頁 >後端開發 >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