Analisis Jenis Penunjuk 'ini'
Dalam C , penuding 'ini' ialah penuding khas yang menunjukkan contoh semasa bagi kelas. Jenisnya ditentukan berdasarkan konteks di mana ia digunakan.
Jenis Penunjuk 'ini' dalam Fungsi Ahli
Dalam fungsi bukan ahli const, jenis 'ini' hanyalah nama kelas diikuti dengan *. Sebagai contoh, dalam kelas bernama ClassName, jenis 'ini' dalam kaedah bukan constnya ialah ClassName *.
Jenis Penunjuk 'ini' dalam Fungsi Ahli Const
Apabila digunakan dalam fungsi ahli const, penunjuk 'ini' menjadi penunjuk kepada objek malar. Jenisnya mencerminkan ini, menjadi const ClassName *. Ini memastikan objek tidak boleh diubah suai melalui penuding 'ini'.
Mengapa Jadikan Penunjuk 'ini' Dimalarkan?
Sebab utama untuk membuat 'ini' pemalar penunjuk dalam fungsi ahli const adalah untuk menguatkuasakan ketepatan const kelas. Dengan menghalang pengubahsuaian objek melalui penunjuk 'ini', ia memastikan objek itu kekal tidak berubah. Ini membantu mengekalkan integriti data kelas dan menghalang pengubahsuaian yang tidak disengajakan.
Ralat dalam Tafsiran
Pemerhatian bahawa jenis penunjuk 'ini' ialah ClassName * const this dalam Windows menggunakan VC 2008 adalah tidak betul. Penunjuk 'ini' bukan nilai l, dan oleh itu, tidak boleh menggunakan kelayakan const di sebelah kanan asterisk (*). Jenis 'ini' yang betul dalam fungsi bukan ahli const ialah ClassName *.
Butiran Pelaksanaan Dalaman
Pada masa lalu, beberapa penyusun telah menggunakan butiran pelaksanaan di mana mereka mentafsirkan penunjuk 'ini' sebagai penunjuk tetap walaupun dalam fungsi bukan ahli const. Walau bagaimanapun, ini tidak selaras dengan spesifikasi bahasa C dan sejak itu telah ditinggalkan oleh kebanyakan penyusun, termasuk GCC.
Nota tentang Rujukan C 11 Rvalue
Dengan pengenalan rujukan nilai dalam C 11, ia menjadi mungkin untuk mengesan keteguhan tambahan yang ditambahkan pada penunjuk 'ini' dengan pelaksanaan yang masih menggunakan helah yang disebutkan di atas. Ini telah menyebabkan teknik ini ditamatkan, kerana ia boleh menyebabkan ralat semasa bekerja dengan rujukan nilai.
Atas ialah kandungan terperinci Apakah Jenis Penunjuk 'ini' yang Betul dalam C : Persoalan Keteguhan dan Pelaksanaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!