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++ 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(); };
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; }; }
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; } };
Ici, FriendClass
是 Person
类的友元类,因此它可以访问 name
和 age
et d'autres membres privés.
Exécutez l'exemple
int main() { Person person{"John Doe", 30}; FriendClass friendObj; friendObj.printPersonDetails(person); return 0; }
Sortie :
John Doe, 30
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!