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
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(); }
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
123456class 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
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; };
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!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.13
Friend-nøkkelordet
Sveip for å vise menyen
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
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(); }
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
123456class 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
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; };
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!