Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Tidak Boleh Menggunakan Rujukan Bukan Const untuk Mengikat Objek Sementara dalam C ?
Dalam C , objek sementara yang dicipta semasa ungkapan hanya boleh diberikan kepada rujukan const, tetapi bukan bukan const rujukan. Ini telah menimbulkan persoalan tentang rasional di sebalik sekatan ini.
Penjelasan konvensional adalah berdasarkan potensi bahaya mengubah suai objek sementara. Jika rujukan bukan const kepada sementara dibenarkan, ia boleh diubah suai secara tidak sengaja, yang membawa kepada akibat yang tidak dapat diramalkan. Walau bagaimanapun, pengkritik berpendapat bahawa membaca daripada objek sementara adalah sama berisiko dan juga harus dihadkan.
Untuk memahami perbezaan ini, pertimbangkan contoh berikut:
String& a = String("test"); // Error const String& a = String("test"); // Ok
Baris pertama ialah ralat, manakala baris kedua adalah sah. Ini menunjukkan bahawa C tidak mengambil berat dengan membaca daripada objek sementara. Jadi, mengapakah penulisan dilarang?
Jawapannya terletak pada aspek asas C : parameter fungsi. Jika rujukan bukan const kepada sementara dibenarkan, ia akan mewujudkan kesamaran apabila menghantar objek sementara kepada fungsi yang menerima rujukan. Contohnya:
void inc(double& x) { x += 0.1; } int i = 0; inc(i);
Dalam contoh ini, apabila i diserahkan kepada inc(), adalah tidak jelas sama ada rujukan kepada i dimaksudkan atau jika salinan sementara i harus dibuat. Kekaburan ini boleh membawa kepada ralat halus.
Dengan melarang rujukan bukan const kepada sementara, C memastikan bahawa parameter fungsi sentiasa merujuk kepada lnilai (objek bukan sementara). Ini menghapuskan potensi kekeliruan dan menggalakkan kejelasan kod.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Rujukan Bukan Const untuk Mengikat Objek Sementara dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!