Nyckelordet Friend
Nyckelordet friend utgör en unik konstruktion som avviker från de vanliga inkapslingsprinciperna inom objektorienterad programmering. Det möjliggör för en funktion eller en annan class att få åtkomst till private och protected medlemmar 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(); }
Denna metod bryter mot inkapslingen eftersom den tillåter externa enheter att komma åt class medlemmar. Det kan dock finnas situationer där detta är nödvändigt. Till exempel:
KeyManager.h
123456class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
encryptionKey hålls private, och det finns ingen åtkomstmetod eftersom vi vill förhindra extern åtkomst till den från class. Men om det finns ett behov av att använda en extern algoritm för kryptering och dekryptering, är det här som friend-keyword kommer in i bilden.
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; };
Det vanligaste användningsområdet för friend-nyckelordet uppstår när snabba lösningar krävs, och du planerar att omstrukturera det senare. Det är att föredra att utforma dina class-relationer utan att förlita sig på det, även om specifika situationer ändå kan uppstå.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Nyckelordet Friend
Svep för att visa menyn
Nyckelordet friend utgör en unik konstruktion som avviker från de vanliga inkapslingsprinciperna inom objektorienterad programmering. Det möjliggör för en funktion eller en annan class att få åtkomst till private och protected medlemmar 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(); }
Denna metod bryter mot inkapslingen eftersom den tillåter externa enheter att komma åt class medlemmar. Det kan dock finnas situationer där detta är nödvändigt. Till exempel:
KeyManager.h
123456class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
encryptionKey hålls private, och det finns ingen åtkomstmetod eftersom vi vill förhindra extern åtkomst till den från class. Men om det finns ett behov av att använda en extern algoritm för kryptering och dekryptering, är det här som friend-keyword kommer in i bilden.
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; };
Det vanligaste användningsområdet för friend-nyckelordet uppstår när snabba lösningar krävs, och du planerar att omstrukturera det senare. Det är att föredra att utforma dina class-relationer utan att förlita sig på det, även om specifika situationer ändå kan uppstå.
Tack för dina kommentarer!