Maison > développement back-end > C++ > Comment les objets C de la même classe peuvent-ils accéder aux variables membres privées des autres ?

Comment les objets C de la même classe peuvent-ils accéder aux variables membres privées des autres ?

Susan Sarandon
Libérer: 2024-12-31 07:59:10
original
401 Les gens l'ont consulté

How Can C   Objects of the Same Class Access Each Other's Private Member Variables?

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;
}
Copier après la connexion

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 :

  • Les membres publics sont accessibles de n'importe où.
  • Les membres privés ne sont accessibles que depuis l'intérieur de la classe.
  • Les membres protégés sont accessible depuis l'intérieur de la classe et depuis les classes dérivées.

É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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal