首頁  >  文章  >  後端開發  >  為什麼 Visual Studio 2010 允許將非常量參考綁定到右值?

為什麼 Visual Studio 2010 允許將非常量參考綁定到右值?

Barbara Streisand
Barbara Streisand原創
2024-10-28 10:05:29151瀏覽

〈🎜>在以下程式碼片段中,Visual Studio 2010 (SP1) 編譯器成功編譯,沒有任何錯誤或警告,即使它看起來是對臨時右值的非常量引用的無效初始化:

Why Does Visual Studio 2010 Allow Binding Non-Const References to Rvalues?

預期行為:

根據C 標準,將非常量引用綁定到右值應被視為錯誤或警告。這是因為非常量引用只能綁定到左值(具有永久位址的物件)。

VS2010 行為:

但是,Visual Studio 2010 編譯器歷史上有允許這種做法作為語言的擴展。此行為不符合 C 標準,通常被認為是一個錯誤。
<code class="cpp">string foo() { return "hello"; }
int main()
{
    string& tem = foo(); // Should be illegal
}</code>

原因:

此行為的原因尚不完全清楚,但它是這被認為與Visual Studio 編譯器在錯誤檢查和警告方面始終更加寬鬆這一事實有關。這種寬鬆性可能是故意引入的,以便在編寫程式碼時提供更大的靈活性,儘管它不遵循 C 標準。

意義:

此行為可能會產生影響為了程式碼安全和效能。將非常量引用綁定到右值可能會導致意外結果,因為右值可能隨時被修改或銷毀。

解:

建議的解法是為了避免將非常量引用綁定到右邊值。相反,請使用 const 引用(可以綁定到左值和右值)或指標。

以上是為什麼 Visual Studio 2010 允許將非常量參考綁定到右值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn