Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Rujukan Bukan Const Tidak Boleh Mengikat Lnilai Pelbagai Jenis dalam C ?

Mengapa Rujukan Bukan Const Tidak Boleh Mengikat Lnilai Pelbagai Jenis dalam C ?

Patricia Arquette
Patricia Arquetteasal
2024-11-23 04:30:20697semak imbas

Why Can't Non-Const References Bind to Lvalues of Different Types in C  ?

Mengikat Rujukan Bukan Const kepada Lnilai Pelbagai Jenis

Dalam C , rujukan bukan const lvalue (&) tidak boleh terikat kepada lnilai jenis yang berbeza, seperti yang ditunjukkan oleh contoh di bawah:

int a;
double &m = a; // Error: non-const lvalue reference cannot bind to an lvalue of different type

Ini adalah kerana rujukan bukan const m cuba untuk mengikat objek sementara yang dibuat semasa tugasan. Rujukan bukan const tidak boleh terikat kepada sementara.

Walau bagaimanapun, pertimbangkan contoh berikut:

const double &m = a; // Valid

Dalam kes ini, rujukan const m terikat pada nilai bukan const, dan penukaran daripada int kepada dua kali ganda dibenarkan. Ini kerana rujukan const melindungi nilai asas daripada diubah suai, menghapuskan potensi rasuah data yang mungkin timbul daripada mengikat rujukan bukan const kepada sementara.

Oleh itu, apabila anda cuba untuk mengikat bukan- rujukan const kepada nilai jenis yang berbeza, ralat akan berlaku disebabkan oleh ketidakupayaan rujukan bukan const untuk mengikat sementara.

Atas ialah kandungan terperinci Mengapa Rujukan Bukan Const Tidak Boleh Mengikat Lnilai Pelbagai Jenis dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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