Rumah >pembangunan bahagian belakang >C++ >Mengapa Rujukan Nilai Bukan Konst Tidak Boleh Terikat kepada Jenis Tidak Serupa dalam C ?

Mengapa Rujukan Nilai Bukan Konst Tidak Boleh Terikat kepada Jenis Tidak Serupa dalam C ?

Susan Sarandon
Susan Sarandonasal
2024-12-03 00:14:11974semak imbas

Why Can't Non-Const Lvalue References Bind to Dissimilar Types in C  ?

Rujukan Nilai Bukan Konst Mengikat kepada Jenis Tidak Serupa

Dalam C , rujukan bukan nilai tetap mesti terikat pada nilai yang sama taip. Ini boleh mengelirukan apabila cuba untuk mengikat objek sementara kepada rujukan bukan const, seperti yang ditunjukkan dalam contoh berikut:

int a;
const double &m = a; // This is allowed
double &m = a; // This produces an error

Ralat, "rujukan nilai bukan const untuk menaip 'double' tidak boleh mengikat kepada nilai jenis 'int' yang tidak berkaitan," menunjukkan bahawa rujukan jenis bukan const tidak boleh mengikat objek yang berbeza taip.

Sebab sekatan ini ialah objek sementara tidak boleh terikat kepada rujukan bukan const. Apabila a ditukar kepada dua kali ganda, objek sementara dicipta. Akibatnya, baris kod berikut:

double &m = a;

Percubaan untuk mengikat rujukan bukan const kepada objek sementara, yang tidak dibenarkan.

Walau bagaimanapun, terdapat pengecualian untuk peraturan ini dalam Visual Studio, di mana sambungan pengkompil membenarkan rujukan bukan const mengikat kepada objek sementara. Walau bagaimanapun, tingkah laku ini tidak standard dan akan mengakibatkan ralat dalam penyusun lain seperti GCC.

Atas ialah kandungan terperinci Mengapa Rujukan Nilai Bukan Konst Tidak Boleh Terikat kepada Jenis Tidak Serupa 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