Maison >développement back-end >C++ >Pourquoi un objet peut-il accéder aux données privées d'un autre dans la même classe C ?

Pourquoi un objet peut-il accéder aux données privées d'un autre dans la même classe C ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 01:17:17955parcourir

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

Pourquoi des objets de la même classe peuvent-ils accéder aux données privées des autres ?

Considérez l'extrait de 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;
};

Étrangement, getData() peut accéder au membre privé mData d'un autre objet TrivialClass. Pourquoi est-ce autorisé ?

Contrôle d'accès par classe

En C , le contrôle d'accès est implémenté classe par classe, et non par objet. Cela signifie que tous les objets de la même classe ont le même accès aux membres privés de la classe, quel que soit leur état ou tout autre objet avec lequel ils peuvent interagir.

Implémentation au moment de la compilation

Le contrôle d'accès C est appliqué au moment de la compilation, ce qui rend peu pratique la mise en œuvre d'un contrôle par objet. Cependant, le contrôle par classe peut être mis en œuvre de manière efficace et fiable lors de la compilation.

Accès protégé

Bien que le contrôle d'accès soit généralement par classe, le spécificateur d'accès protégé fournit une forme rudimentaire de contrôle par objet. Cependant, ce contrôle est limité par rapport à ce qui serait possible avec un véritable contrôle d'accès par objet.

En conclusion, les objets d'une même classe peuvent accéder aux données privées des autres car le mécanisme de contrôle d'accès de C fonctionne sur un base par classe. Cette décision de conception permet une application efficace et fiable du contrôle d'accès lors de la compilation.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn