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

DDD
Lepaskan: 2024-10-31 04:07:34
asal
357 orang telah melayarinya

 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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan