Pourquoi les objets de la même classe peuvent-ils accéder aux données privées des autres ?
En C, les objets de la même classe peuvent accéder aux données privées des autres données car le contrôle d’accès fonctionne par classe et non par objet. Cela signifie que les données privées ne sont inaccessibles qu'aux objets en dehors de la classe.
Par exemple, considérons le code suivant :
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; }
Dans ce code, TrivialClass a une variable membre privée mData et une fonction membre publique getData qui renvoie une référence à mData. Lorsque les objets a et b sont créés, ils peuvent tous deux accéder aux données privées de chacun via la fonction getData.
Cela est possible car le contrôle d'accès de C est basé sur les règles suivantes :
Étant donné que mData est un membre privé, il ne doit être accessible qu'à partir de la classe TrivialClass. Cependant, comme le contrôle d'accès s'effectue par classe, les objets d'une même classe peuvent toujours accéder aux membres privés les uns des autres.
Ce comportement n'est pas présent dans tous les langages de programmation. Certains langages, comme Java, disposent d'un véritable contrôle d'accès par objet, ce qui signifie que les objets de la même classe ne peuvent pas accéder aux données privées des autres.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!