Friend-nøkkelordet
Nøkkelordet friend utgjør en unik konstruksjon som avviker 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 med innkapsling fordi den lar eksterne enheter få tilgang til class-medlemmer. Det kan likevel 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 utenfra 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 til hensikt å refaktorere det senere. Det er å foretrekke å designe dine class-relasjoner uten å være avhengig av det, 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
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?
Fantastisk!
Completion rate forbedret til 3.13
Friend-nøkkelordet
Sveip for å vise menyen
Nøkkelordet friend utgjør en unik konstruksjon som avviker 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 med innkapsling fordi den lar eksterne enheter få tilgang til class-medlemmer. Det kan likevel 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 utenfra 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 til hensikt å refaktorere det senere. Det er å foretrekke å designe dine class-relasjoner uten å være avhengig av det, selv om spesifikke situasjoner fortsatt kan oppstå.
Takk for tilbakemeldingene dine!