首頁  >  文章  >  後端開發  >  為什麼我不能將非常量左值引用綁定到 C 中的右值?

為什麼我不能將非常量左值引用綁定到 C 中的右值?

DDD
DDD原創
2024-10-31 04:07:34295瀏覽

 Why Can't I Bind a Non-Const Lvalue Reference to an Rvalue in C  ?

無法將非常量左值引用綁定到右值:解

給定的程式碼片段在初始化類別Foo 的物件時遇到錯誤在Bar 類別的建構子中。錯誤訊息表示非常量左值參考 (Foo f) 正在綁定到右值(呼叫 genValue() 的結果)。

在 C 中,非常量引用參數只能引用命名的變數(左值)。然而,genValue() 的結果是一個臨時值(右值)。為了解決這個問題,我們需要透過值(int)傳遞 genValue() 的值。

<code class="cpp">class Foo {
public:
    Foo(int x) {
        this->x = x;
    }
private:
    int x;
};

class Bar {
public:
    Bar(): f(genValue()) {
    }
private:
    Foo f;

    int genValue() {
        int x;
        // do something ...
        x = 1;
        return x;
    }
};</code>

透過將建構子參數改為 int,我們現在可以在建構函式範圍內初始化 Foo 對象,而無需任何錯誤。

以上是為什麼我不能將非常量左值引用綁定到 C 中的右值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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