Rumah >pembangunan bahagian belakang >C++ >Bolehkah Kelas Dalaman dalam C Mengakses Pembolehubah Peribadi Kelas Induk Mereka?

Bolehkah Kelas Dalaman dalam C Mengakses Pembolehubah Peribadi Kelas Induk Mereka?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-29 08:04:10295semak imbas

Can Inner Classes in C   Access Their Parent Class's Private Variables?

Akses Kelas Dalaman kepada Pembolehubah Peribadi

Dalam C , kelas dalam bersarang dalam kelas lain dan mempunyai keistimewaan akses khas. Timbul persoalan: bolehkah kelas dalam mengakses pembolehubah peribadi kelas induk mereka?

Jawapannya ialah ya. Kelas dalaman pada dasarnya adalah rakan kelas yang ditakrifkan di dalamnya. Ini bermakna objek kelas dalam boleh mengakses secara langsung ahli peribadi objek kelas induknya.

Walau bagaimanapun, tidak seperti di Jawa, tiada hubungan induk-anak tersirat antara objek kelas dalam dan objek kelas induknya. Untuk mewujudkan hubungan ini, objek kelas induk mesti dihantar secara eksplisit kepada pembina kelas dalam.

Berikut ialah contoh kod yang menunjukkan akses kelas dalam kepada pembolehubah persendirian:

#include <iostream>

class Outer {
private:
    int var = 4;
    static const char* const MYCONST = "myconst";

public:
    class Inner {
    public:
        Inner(Outer& parent) : parent(parent) {}
        void func() {
            std::cout << parent.var << std::endl;
        }

    private:
        Outer& parent;
    };
};

int main() {
    Outer outer;
    Outer::Inner inner(outer);
    inner.func();
    return 0;
}

Dalam ini contoh, kelas dalam Inner mempunyai pembina yang mengambil rujukan kepada objek Luar induk sebagai hujah. Ini mewujudkan perhubungan induk-anak, membenarkan kelas dalam mengakses var pembolehubah persendirian objek Luar.

Apabila Inner::func() dipanggil, ia mencetak nilai pembolehubah persendirian var, menunjukkan bahawa kelas dalam sememangnya boleh mengakses pembolehubah peribadi kelas induknya.

Atas ialah kandungan terperinci Bolehkah Kelas Dalaman dalam C Mengakses Pembolehubah Peribadi Kelas Induk Mereka?. 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