Rumah >pembangunan bahagian belakang >C++ >Mengapakah Saya Tidak Boleh Mengikat Rujukan Nilai Bukan Kons kepada Nilai R dalam C ?

Mengapakah Saya Tidak Boleh Mengikat Rujukan Nilai Bukan Kons kepada Nilai R dalam C ?

DDD
DDDasal
2024-10-31 04:07:34402semak imbas

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

Tidak Dapat Mengikat Rujukan Nilai Bukan Kons kepada Rvalue: A Resolue

Coretan kod yang diberikan mengalami ralat semasa memulakan objek kelas Foo dalam pembina Bar kelas. Mesej ralat menunjukkan bahawa rujukan bukan const lvalue (Foo f) sedang terikat pada rvalue (hasil panggilan genValue()).

Dalam C , parameter rujukan bukan const hanya boleh merujuk kepada yang dinamakan pembolehubah (lvalues). Walau bagaimanapun, hasil genValue() ialah nilai sementara (rvalue). Untuk menyelesaikan isu ini, kita perlu menghantar nilai genValue() dengan nilai (int).

<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>

Dengan menukar hujah pembina kepada int, kita kini boleh memulakan objek Foo dalam skop pembina tanpa sebarang kesilapan.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Mengikat Rujukan Nilai Bukan Kons kepada Nilai R dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn