Warum können Objekte derselben Klasse auf die privaten Daten anderer zugreifen?
In C können Objekte derselben Klasse auf die privaten Daten anderer zugreifen Daten, da die Zugriffskontrolle pro Klasse und nicht pro Objekt erfolgt. Dies bedeutet, dass private Daten nur für Objekte außerhalb der Klasse unzugänglich sind.
Betrachten Sie beispielsweise den folgenden Code:
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; }
In diesem Code verfügt TrivialClass über eine private Mitgliedsvariable mData und eine öffentliche Memberfunktion getData, die einen Verweis auf mData zurückgibt. Wenn die Objekte a und b erstellt werden, können beide über die getData-Funktion auf die privaten Daten des anderen zugreifen.
Dies ist möglich, weil die Zugriffskontrolle von C auf den folgenden Regeln basiert:
Da mData ein privates Mitglied ist, sollte es nur innerhalb der TrivialClass-Klasse zugänglich sein. Da die Zugriffskontrolle jedoch pro Klasse erfolgt, können Objekte derselben Klasse weiterhin auf die privaten Mitglieder der anderen Klasse zugreifen.
Dieses Verhalten ist nicht in allen Programmiersprachen vorhanden. Einige Sprachen, wie zum Beispiel Java, verfügen über eine echte Zugriffskontrolle pro Objekt, was bedeutet, dass Objekte derselben Klasse nicht auf die privaten Daten anderer zugreifen können.
Das obige ist der detaillierte Inhalt vonWie können C-Objekte derselben Klasse auf die privaten Mitgliedsvariablen des anderen zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!