Kursinnhold
C++ OOP
C++ OOP
Friend-nøkkelordet
Nøkkelordet friend
er en unik konstruksjon som skiller seg fra de vanlige prinsippene for innkapsling i objektorientert programmering. Det gir en funksjon eller en annen class
tilgang til private
og protected
medlemmer i en 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(); }
Denne tilnærmingen bryter innkapslingen fordi den lar eksterne enheter få tilgang til class
-medlemmer. Likevel kan det finnes situasjoner hvor dette er nødvendig. For eksempel:
KeyManager.h
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
encryptionKey holdes private
, og det finnes ingen tilgangsmetode fordi vi ønsker å hindre ekstern tilgang til den fra utenfor class
. Men hva om det oppstår et behov for å bruke en ekstern algoritme for kryptering og dekryptering? Det er her friend-keyword
kommer inn i bildet.
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; };
Den vanligste bruken av friend
-nøkkelordet oppstår når raske løsninger er nødvendige, og du har planer om å refaktorere det senere. Det er å foretrekke å designe dine class
-relasjoner uten å være avhengig av dette, selv om spesifikke situasjoner fortsatt kan oppstå.
Takk for tilbakemeldingene dine!