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);
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!