Memahami Kebolehcapaian Data dalam Objek Kelas Sama
Dalam C , kelas selalunya mengandungi ahli data peribadi untuk merangkum maklumat sensitif atau dalaman. Walau bagaimanapun, ia mungkin kelihatan berlawanan dengan intuisi bahawa objek yang dimiliki oleh kelas yang sama boleh mengakses data peribadi satu sama lain. Fenomena ini menimbulkan persoalan, "Mengapa ini dibenarkan?"
Kawalan Akses dalam C
Tidak seperti beberapa bahasa pengaturcaraan lain, C melaksanakan kawalan akses pada peringkat kelas. Ini bermakna apabila ahli data peribadi diisytiharkan dalam kelas, ia sememangnya tidak boleh diakses oleh semua entiti di luar kelas itu. Walau bagaimanapun, terdapat pengecualian kepada peraturan ini.
Pengecualian: Kebolehcapaian Kelas Sama
Objek yang dibuat daripada kelas yang sama berkongsi pelan tindakan yang sama dan, oleh itu, mempunyai akses kepada data peribadi masing-masing. Ini kerana peraturan kawalan akses dikuatkuasakan berdasarkan setiap kelas, bukan berdasarkan setiap objek.
Penaakulan
Keputusan reka bentuk ini adalah berdasarkan tujuan ahli data peribadi. Data peribadi bertujuan untuk melindungi data daripada akses luaran, tetapi ia tidak perlu disembunyikan daripada objek lain dalam kelas yang sama. Malah, berkongsi data peribadi antara objek kelas yang sama selalunya membenarkan kod yang cekap dan boleh digunakan semula.
Contoh
Pertimbangkan kod berikut:
class TrivialClass { public: TrivialClass(const std::string& data) : mData(data) {} const std::string& getData(const TrivialClass& rhs) const { return rhs.mData; } private: std::string mData; }; int main() { TrivialClass a("fish"); TrivialClass b("heads"); std::cout << "b via a = " << a.getData(b) << std::endl; return 0; }
Kod ini menyusun dan berjalan dengan jayanya kerana objek a boleh mengakses ahli data mData peribadi objek b dalam kaedah getData. Ciri ini memudahkan perkongsian data dan kerjasama dalam kelas.
Atas ialah kandungan terperinci Mengapa Objek C Kelas Yang Sama Boleh Mengakses Data Peribadi Satu Sama Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!