Contenuti del Corso
OOP in C++
OOP in C++
La Parola Chiave Friend
La parola chiave friend
rappresenta un costrutto unico, offrendo una deviazione dai principi standard di incapsulamento della programmazione orientata agli oggetti. Consente a una funzione o a un'altra class
di accedere ai membri private
e protected
di una 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'utilizzo di questo approccio viola l'incapsulamento poiché permette a entità esterne di accedere ai membri della class
. Tuttavia, possono esserci situazioni in cui ciò è necessario. Ad esempio:
KeyManager.h
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
La encryptionKey viene mantenuta private
e non viene fornito alcun metodo di accesso perché si desidera impedire l'accesso esterno da fuori la class
. Tuttavia, se si presenta la necessità di utilizzare un algoritmo esterno per la cifratura e la decifratura, entra in gioco la parola chiave friend keyword
.
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; };
L'uso più comune della parola chiave friend
si presenta quando sono necessari interventi rapidi, con l'intenzione di effettuare una successiva rifattorizzazione. È preferibile progettare le relazioni tra le class
senza farvi affidamento, anche se possono comunque verificarsi scenari specifici.
Grazie per i tuoi commenti!