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
Susan Sarandonoriginal
2024-12-31 07:59:10422parcourir

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;
}

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!

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