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!