Mengapa Objek Kelas Yang Sama Boleh Mengakses Data Peribadi Satu Sama Lain?
Pertimbangkan coretan 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; };
Anehnya, getData() boleh mengakses mData ahli persendirian objek TrivialClass yang lain. Mengapakah ini dibenarkan?
Kawalan Akses Setiap Kelas
Dalam C , kawalan akses dilaksanakan berdasarkan setiap kelas, bukan asas setiap objek. Ini bermakna semua objek dalam kelas yang sama mempunyai akses yang sama kepada ahli peribadi kelas, tanpa mengira keadaan mereka atau mana-mana objek lain yang boleh berinteraksi dengannya.
Pelaksanaan Masa Kompilasi
Kawalan akses C dikuatkuasakan pada masa penyusunan, menjadikannya tidak praktikal untuk melaksanakan kawalan setiap objek. Kawalan setiap kelas, walau bagaimanapun, boleh dilaksanakan dengan cekap dan boleh dipercayai semasa penyusunan.
Akses Dilindungi
Walaupun kawalan akses lazimnya bagi setiap kelas, penentu akses yang dilindungi menyediakan satu bentuk asas kawalan setiap objek. Walau bagaimanapun, kawalan ini terhad berbanding dengan apa yang boleh dilakukan dengan kawalan capaian setiap objek yang benar.
Kesimpulannya, objek kelas yang sama boleh mengakses data peribadi masing-masing kerana mekanisme kawalan capaian C beroperasi pada asas setiap kelas. Keputusan reka bentuk ini membolehkan penguatkuasaan kawalan akses yang cekap dan boleh dipercayai semasa penyusunan.
Atas ialah kandungan terperinci Mengapa Satu Objek Boleh Mengakses Data Peribadi Orang Lain dalam Kelas C yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!