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
1234567891011121314151617#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
123456class 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
12345678910#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!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.13
La Parola Chiave Friend
Scorri per mostrare il menu
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
1234567891011121314151617#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
123456class 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
12345678910#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!