Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
DDDasal
2024-11-12 18:57:02535semak imbas

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;
    }
};

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;
    }
};

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!

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