Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Tidak Boleh Menetapkan Objek Sementara kepada Rujukan Bukan Const dalam C ?

Mengapa Saya Tidak Boleh Menetapkan Objek Sementara kepada Rujukan Bukan Const dalam C ?

Linda Hamilton
Lepaskan: 2024-12-19 10:20:10
asal
1003 orang telah melayarinya

Why Can't I Assign Temporary Objects to Non-Const References in C  ?

Mengapa Rujukan Bukan Const kepada Objek Sementara Dilarang

C melarang memberikan objek sementara kepada rujukan bukan const. Sekatan ini berpunca daripada fakta bahawa objek sementara hilang selepas pernyataan di mana ia dicipta. Membenarkan rujukan bukan const kepada objek sementara boleh membawa kepada tingkah laku yang tidak ditentukan.

Pertimbangkan kod berikut:

String& a = String("test"); // Error
Salin selepas log masuk

Kod ini cuba untuk menetapkan objek String sementara kepada rujukan bukan const a . Walau bagaimanapun, ini tidak dibenarkan kerana a bukan rujukan const dan objek sementara tidak boleh diubah suai.

Beberapa sebab biasa untuk sekatan ini termasuk:

  • Mengubah suai objek sementara boleh menyebabkan tidak dapat diramalkan keputusan, kerana ia akan dimusnahkan serta-merta selepas penyata mereka tamat.
  • Adalah sukar untuk menentukan apabila objek sementara telah diubah suai, yang boleh mengakibatkan ketidakkonsistenan dan ralat.
  • Ia boleh membawa kepada peningkatan kerumitan dalam bahasa, menjadikannya lebih sukar untuk difahami dan digunakan.

C membenarkan membaca daripada objek sementara tetapi tidak menulis kepada mereka kerana membaca tidak mengubah keadaan objek. Walau bagaimanapun, menulis kepada objek sementara mungkin mempunyai akibat yang tidak dijangka, kerana objek itu mungkin dimusnahkan sebelum operasi tulis selesai.

Oleh itu, untuk mengelakkan masalah yang berpotensi ini, C mengehadkan rujukan bukan const kepada objek sementara, sementara masih membenarkan rujukan const untuk tujuan bacaan yang selamat. Sekatan ini membantu memastikan ketepatan program dan menghalang tingkah laku yang tidak ditentukan yang boleh terhasil daripada mengubah suai objek sementara.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menetapkan Objek Sementara kepada Rujukan Bukan Const 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan