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

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

Susan Sarandon
Lepaskan: 2024-12-11 15:02:11
asal
825 orang telah melayarinya

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

Mengapa hanya rujukan const dibenarkan untuk objek sementara dalam C ?

Dalam C , penetapan objek sementara dibenarkan semata-mata kepada rujukan const , manakala rujukan bukan const adalah dilarang. Kekangan ini telah menimbulkan pelbagai persoalan, terutamanya mengenai potensi untuk mengubah suai objek sementara.

Seperti yang diakui secara meluas, objek sementara adalah sementara dan hilang sebaik sahaja pernyataan yang mengandungi penciptaan mereka tamat. Ini menimbulkan kebimbangan yang sah: mengapa pengubahsuaian dihadkan semasa membaca dibenarkan?

Untuk memahami percanggahan ini, pertimbangkan situasi hipotesis yang melibatkan parameter fungsi:

void inc(double& x)
{ x += 0.1; }

int i = 0;
inc(i);
Salin selepas log masuk

Jika rujukan bukan const adalah dibenarkan untuk parameter sementara, tingkah laku kod ini akan menjadi pelik. Walaupun meluluskan hujah int melalui rujukan, nilai i kekal tidak berubah selepas menggunakan inc. Ini akan menyebabkan hasil yang tidak dijangka dan tidak logik.

Membenarkan rujukan const, walau bagaimanapun, menjamin bahawa objek sementara yang dihantar kepada parameter fungsi tidak boleh diubah suai secara tidak sengaja. Ini menghalang kemungkinan tingkah laku yang tidak dijangka dan memastikan bahawa niat menggunakan rujukan const ditegakkan.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Melewati 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