Maison > développement back-end > C++ > le corps du texte

Explication détaillée des fonctions amies C++ : Comment restreindre les droits d'accès des fonctions amies ?

WBOY
Libérer: 2024-04-29 09:09:02
original
1046 Les gens l'ont consulté

Les fonctions Friends en C++ peuvent restreindre les droits d'accès via des spécificateurs d'accès ou des espaces de noms pour autoriser uniquement des fonctions spécifiques ou des fonctions au sein d'un espace de noms spécifique à accéder aux membres privés d'une classe.

C++ 友元函数详解:如何限制友元函数的访问权限?

C++ Explication détaillée des fonctions amis : Comment restreindre les droits d'accès des fonctions amis ?

En C++, une fonction ami est une fonction spéciale qui permet aux fonctions externes d'accéder aux membres privés d'une classe. Il nous permet d'accéder à des données privées ou à des fonctions d'une classe en dehors d'une autre classe, offrant ainsi une plus grande flexibilité dans certaines situations.

Restreindre les droits d'accès aux fonctions amis

Nous pouvons limiter les droits d'accès aux fonctions amis aux membres privés en restreignant les déclarations d'amis. Il existe deux manières de procéder :

Méthode 1 : Utiliser des spécificateurs d'accès

Nous pouvons restreindre l'accès des fonctions d'amis à l'aide de spécificateurs d'accès (publics, protégés ou privés). La syntaxe est la suivante :

class MyClass {
  private:
    // 私有成员只能被友元函数访问
    friend void friendFunction();
};
Copier après la connexion

Méthode 2 : Utiliser des espaces de noms

Vous pouvez également utiliser des espaces de noms pour limiter la visibilité des fonctions amis. La syntaxe est la suivante :

namespace MyNamespace {
  class MyClass {
    private:
      // 私有成员由 MyNameSpace 命名空间内部所有友元函数访问
      friend class MyFriendClass;
  };
}
Copier après la connexion

Cas pratique

Supposons que nous ayons les deux classes suivantes :

class Person {
  private:
    string name;
    int age;
};

class FriendClass {
  public:
    // 可以访问私有成员,因为它是一个友元类
    void printPersonDetails(Person person) {
      cout << person.name << ", " << person.age << endl;
    }
};
Copier après la connexion

Ici, FriendClassPerson 类的友元类,因此它可以访问 nameage et d'autres membres privés.

Exécutez l'exemple

int main() {
  Person person{"John Doe", 30};
  FriendClass friendObj;  
  friendObj.printPersonDetails(person);
  return 0;
}
Copier après la connexion

Sortie :

John Doe, 30
Copier après la connexion

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!