Rumah > Artikel > pembangunan bahagian belakang > Adakah Menyemak Ketidakselarasan \"ini\" Pernah Diwajarkan dalam C ?
Adakah Menyemak Kebatalan "ini" Pernah Diwajarkan?
Dalam bidang pengaturcaraan berorientasikan objek, konsep "ini," sering sinonim dengan tanggapan objek semasa, memainkan peranan penting. Walau bagaimanapun, persoalan yang timbul dalam konteks ini ialah sama ada masuk akal untuk menyemak sama ada "ini" adalah batal.
Soalan Asal:
Dalam kelas dengan ahli fungsi, pembangun mengemukakan soalan:
"Jika saya mempunyai kaedah dengan syarat "ini == nullptr" di dalamnya, dan jika hasilnya benar, saya diarahkan untuk mengembalikan kod ralat. Jika "ini" sememangnya batal, menunjukkan bahawa objek telah dipadamkan, adakah kaedah itu masih boleh menghasilkan sebarang output?"
Perspektif C Standard:
Dalam standard C , jawapannya adalah tidak kukuh. Panggilan yang dibuat pada penunjuk nol, mengikut definisi, kelakuan tidak ditentukan. Sebarang kod yang bergantung pada semakan untuk "ini" == null adalah bukan standard. Adalah penting untuk ambil perhatian bahawa ini juga digunakan untuk fungsi bukan maya.
Pengecualian dalam Pelaksanaan Khusus:
Sesetengah pelaksanaan C membenarkan "ini == 0," mewujudkan kaveat kepada tingkah laku standard. Perpustakaan yang direka khusus untuk pelaksanaan sedemikian boleh menggunakan syarat ini sebagai penggodaman, seperti yang ditunjukkan oleh gandingan VC dengan MFC.
Pertimbangan Lain:
Melangkaui peraturan pelaksanaan yang ketat , faktor lain mungkin menyumbang kepada kewujudan "ini" == semakan nol. Sesetengah keadaan mungkin berfungsi sebagai bantuan penyahpepijatan, menangkap ralat apabila keadaan itu ditemui sebelum ini disebabkan ralat pengekodan dalam pemanggil. Penegasan biasanya lebih disukai untuk tujuan ini, menyediakan mekanisme yang lebih sesuai untuk mengesan situasi sedemikian.
Kesimpulan:
Dalam konteks standard C , semak "ini" == null tidak wajar. Panggilan kaedah pada penunjuk nol adalah tingkah laku yang tidak ditentukan, menyebabkan sebarang pergantungan pada pemeriksaan sedemikian tidak boleh dipercayai. Jika ditemui semasa semakan kod, semakan ini harus diteliti dan berpotensi digantikan dengan mekanisme pengendalian ralat yang lebih sesuai.
Atas ialah kandungan terperinci Adakah Menyemak Ketidakselarasan \"ini\" Pernah Diwajarkan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!