Rumah > pembangunan bahagian belakang > C++ > Mengapa Satu Objek Boleh Mengakses Data Peribadi Orang Lain dalam Kelas C yang Sama?

Mengapa Satu Objek Boleh Mengakses Data Peribadi Orang Lain dalam Kelas C yang Sama?

Barbara Streisand
Lepaskan: 2024-12-10 01:17:17
asal
954 orang telah melayarinya

Why Can One Object Access Another's Private Data in the Same C   Class?

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;
};
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan