Rumah > pembangunan bahagian belakang > C++ > Apakah Perbezaan dalam Jenis Penunjuk 'ini' Antara Fungsi Bukan Const dan Ahli Const?

Apakah Perbezaan dalam Jenis Penunjuk 'ini' Antara Fungsi Bukan Const dan Ahli Const?

DDD
Lepaskan: 2024-11-12 18:57:02
asal
605 orang telah melayarinya

What is the Difference in the 'this' Pointer Type Between Non-Const and Const Member Functions?

Memahami Jenis Penunjuk 'Ini'

Penunjuk 'ini' ialah penuding yang menunjuk ke objek yang mana ahli berfungsi dipanggil. Ia disediakan secara automatik oleh pengkompil dan digunakan untuk mengakses ahli objek. Jenis penuding 'ini' bergantung pada sama ada ia sedang diakses dalam fungsi bukan const atau const ahli.

Dalam fungsi bukan const ahli, 'ini' mempunyai jenis "ClassName *," di mana ClassName ialah nama kelas. Ini membolehkan fungsi ahli mengubah suai data objek. Sebagai contoh, kod berikut menunjukkan fungsi bukan ahli const yang mengubah suai nama objek:

class Person {
    string name;
    void SetName(string newName) {
        name = newName;
    }
};
Salin selepas log masuk

Dalam fungsi ahli const, 'ini' mempunyai jenis "const ClassName *." Ini menunjukkan bahawa nilai yang ditunjukkan oleh penunjuk adalah malar, bermakna ia tidak boleh diubah suai. Fungsi ahli masih boleh mengakses data objek, tetapi ia tidak boleh mengubah suainya. Berikut ialah contoh:

class Person {
    string name;
    void GetName() const {
        cout << name << endl;
    }
};
Salin selepas log masuk

Lazimnya, pengkompil akan secara automatik menentukan jenis penunjuk 'ini' berdasarkan pengubah suai fungsi ahli. Walau bagaimanapun, sesetengah penyusun mungkin menyediakan pilihan tambahan untuk menentukan jenis penunjuk 'ini' secara eksplisit. Adalah penting untuk memahami perbezaan antara kedua-dua jenis untuk memastikan penggunaan fungsi ahli dan data objek yang betul.

Atas ialah kandungan terperinci Apakah Perbezaan dalam Jenis Penunjuk 'ini' Antara Fungsi Bukan Const dan Ahli Const?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan