Contenu du cours
Programmation Orientée Objet en C++
Programmation Orientée Objet en C++
Le Mot-Clé Friend
Le mot-clé friend
constitue une construction unique, offrant une dérogation aux principes standards d'encapsulation de la programmation orientée objet. Il permet à une fonction ou à une autre class
d'accéder aux membres private
et protected
d'une class
.
main.cpp
#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; } int main() { func(); }
L'utilisation de cette approche rompt l'encapsulation car elle autorise des entités externes à accéder aux membres de la class
. Cependant, il peut exister des situations où cela s'avère nécessaire. Par exemple :
KeyManager.h
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
La clé de chiffrement est maintenue en private
, et aucune méthode d'accès n'est fournie car il est souhaité d'empêcher tout accès externe depuis l'extérieur de la class
. Cependant, s'il devient nécessaire d'utiliser un algorithme externe pour le chiffrement et le déchiffrement, c'est là que le mot-clé keyword
entre en jeu.
KeyManager.h
CryptographicAlgorithm.h
#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 du mot-clé friend
survient lorsque des correctifs rapides sont nécessaires, avec l'intention de refactoriser ultérieurement. Il est préférable de concevoir les relations entre vos class
sans y recourir, bien que certains scénarios spécifiques puissent encore se présenter.
Merci pour vos commentaires !