Friend-nøgleordet
Nøgleordet friend udgør en unik konstruktion, der adskiller sig fra de almindelige indkapslingsprincipper i objektorienteret programmering. Det tillader en funktion eller en anden class at få adgang til private og protected medlemmer af 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 tilgang bryder indkapslingen, fordi den tillader eksterne enheder at få adgang til class-medlemmer. Der kan dog være situationer, hvor det er nødvendigt. For eksempel:
KeyManager.h
123456class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
encryptionKey holdes private, og der gives ikke nogen accessor-metode, fordi ekstern adgang til den fra udenfor class ønskes forhindret. Men hvis der opstår behov for at anvende en ekstern algoritme til kryptering og dekryptering, er det her friend-keywordet kommer i spil.
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 mest almindelige anvendelse af friend-nøgleordet opstår, når hurtige løsninger er nødvendige, og du har til hensigt at omstrukturere det senere. Det er at foretrække at designe dine class-relationer uden at være afhængig af det, selvom specifikke scenarier stadig kan forekomme.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you give an example of how the friend keyword is used in code?
What are some alternatives to using the friend keyword?
Are there any risks or drawbacks to using the friend keyword?
Awesome!
Completion rate improved to 3.13
Friend-nøgleordet
Stryg for at vise menuen
Nøgleordet friend udgør en unik konstruktion, der adskiller sig fra de almindelige indkapslingsprincipper i objektorienteret programmering. Det tillader en funktion eller en anden class at få adgang til private og protected medlemmer af 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 tilgang bryder indkapslingen, fordi den tillader eksterne enheder at få adgang til class-medlemmer. Der kan dog være situationer, hvor det er nødvendigt. For eksempel:
KeyManager.h
123456class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
encryptionKey holdes private, og der gives ikke nogen accessor-metode, fordi ekstern adgang til den fra udenfor class ønskes forhindret. Men hvis der opstår behov for at anvende en ekstern algoritme til kryptering og dekryptering, er det her friend-keywordet kommer i spil.
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 mest almindelige anvendelse af friend-nøgleordet opstår, når hurtige løsninger er nødvendige, og du har til hensigt at omstrukturere det senere. Det er at foretrække at designe dine class-relationer uden at være afhængig af det, selvom specifikke scenarier stadig kan forekomme.
Tak for dine kommentarer!