Contenu du cours
C++ Oop
C++ Oop
The Friend Keyword
Le mot-clé friend
se présente comme une construction unique, offrant un écart par rapport aux principes standard d'encapsulation de la programmation orientée objet. Il permet à une fonction ou à une autre classe d'accéder aux membres privés et protégés d'une classe.
main
#include <iostream> class Example { private: const static int static_private_member = 0; friend void func(); // grants access to the private members to func() }; void func() { std::cout << Example::static_private_member << std::endl; } int main() { func(); }
Utiliser cette approche brise l'encapsulation car elle permet à des entités extérieures d'accéder aux membres de la classe. Cependant, il peut y avoir des situations où cela est nécessaire. Par exemple :
KeyManager
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
Dans cet exemple, la clé de chiffrement est gardée privée, et il n'y a pas de méthode d'accès fournie car nous voulons empêcher l'accès externe à celle-ci depuis l'extérieur de la classe. Mais que se passe-t-il s'il est nécessaire d'utiliser un algorithme externe pour chiffrer et déchiffrer, c'est là que le keyword
ami entre en jeu.
KeyManager
CryptographicAlgorithm
#include "CryptographicAlgorithm.h" class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; // Allow CryptographicAlgorithm access to private members friend class CryptographicAlgorithm; };
Le cas d'utilisation le plus courant pour le mot-clé friend
survient lorsque des correctifs rapides sont nécessaires, et que vous avez l'intention de le refactoriser plus tard. Il est préférable de concevoir vos relations de classe sans y recourir, bien que des scénarios spécifiques puissent encore se produire.
Merci pour vos commentaires !