Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Nyckelordet Friend | Översikt Av Inkapsling
C++ OOP

bookNyckelordet Friend

friend-nyckelordet 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

main.cpp

copy
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(); }

Att använda detta tillvägagångssätt bryter inkapslingen eftersom det tillåter externa enheter att få åtkomst till class-medlemmar. Det kan dock finnas situationer där detta är nödvändigt. Till exempel:

KeyManager.h

KeyManager.h

copy
123456
class 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 utanför class. Men om det finns ett behov av att använda en extern algoritm för kryptering och dekryptering, är det här friend-keyword kommer in i bilden.

KeyManager.h

KeyManager.h

CryptographicAlgorithm.h

CryptographicAlgorithm.h

copy
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å.

question mark

Vad används friend-nyckelordet till?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookNyckelordet Friend

Svep för att visa menyn

friend-nyckelordet 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

main.cpp

copy
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(); }

Att använda detta tillvägagångssätt bryter inkapslingen eftersom det tillåter externa enheter att få åtkomst till class-medlemmar. Det kan dock finnas situationer där detta är nödvändigt. Till exempel:

KeyManager.h

KeyManager.h

copy
123456
class 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 utanför class. Men om det finns ett behov av att använda en extern algoritm för kryptering och dekryptering, är det här friend-keyword kommer in i bilden.

KeyManager.h

KeyManager.h

CryptographicAlgorithm.h

CryptographicAlgorithm.h

copy
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å.

question mark

Vad används friend-nyckelordet till?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 6
some-alt