Rumah > pembangunan bahagian belakang > C++ > Adakah Konst Penunjuk 'ini' atau Bukan Konst: Kisah Dua Jenis?

Adakah Konst Penunjuk 'ini' atau Bukan Konst: Kisah Dua Jenis?

Mary-Kate Olsen
Lepaskan: 2024-11-09 15:11:02
asal
247 orang telah melayarinya

Is the 'this' Pointer Const or Non-const: A Tale of Two Types?

Sifat Penunjuk 'ini': Bukan const atau Constant?

Seperti yang dicadangkan oleh tajuk, penunjuk 'ini' ialah elemen di mana-mana dalam bahasa pengaturcaraan berorientasikan objek seperti C . Tetapi apakah jenis khususnya?

Jawapannya adalah dua kali ganda, bergantung pada konteks penggunaan: di dalam kaedah kelas bukan const, penunjuk 'ini' hanyalah penunjuk kepada jenis objek, iaitu, ' Nama Kelas '. Walau bagaimanapun, apabila digunakan dalam kaedah const, penunjuk 'ini' menjadi penunjuk tetap: 'Const ClassName '.

Rasional untuk Ketekalan

The tujuan perbezaan jenis ini adalah untuk menguatkuasakan keteguhan keadaan objek. Dalam kaedah const, data dalaman objek dianggap tidak berubah, menghalang sebarang pengubahsuaian. Dengan menjadikan penuding 'ini' sebagai penuding malar, pengkompil memastikan objek yang tidak boleh diubah suai sentiasa diakses melalui laluan akses const.

Penyusun Quirks

Sementara penunjuk 'ini' secara teorinya harus mempunyai jenis 'const ClassName *' dalam kaedah const, sesetengah penyusun mempamerkan kelainan dalaman. Mereka mentafsirkan penunjuk 'ini' sebagai penunjuk tetap, walaupun dalam kaedah tidak tetap. Amalan ini, yang pernah berleluasa dalam penyusun lama seperti GCC dan MSVC, bertujuan untuk menjamin ketidakbolehubahsuaian penunjuk 'ini'.

Kehancuran Helah Penunjuk Malar

Dengan pengenalan rujukan nilai dalam C 11, amalan mentafsir 'ini' sebagai penunjuk tetap menjadi tidak praktikal. Rujukan Rvalue boleh mengesan const tambahan pada jenis penunjuk 'ini', yang membawa kepada ralat kompilasi dalam persekitaran yang masih menggunakan teknik penunjuk tetap. Penyusun moden seperti GCC telah meninggalkan penyelesaian ini, manakala MSVC berterusan dalam pelaksanaannya sehingga hari ini.

Atas ialah kandungan terperinci Adakah Konst Penunjuk 'ini' atau Bukan Konst: Kisah Dua Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan