The Friend Keyword
Sveip for å vise menyen
Nøkkelordet friend er en unik konstruksjon som gir et avvik fra de vanlige innkapslingsprinsippene i objektorientert programmering. Det gjør det mulig for en funksjon eller en annen class å få tilgang til private og protected medlemmer av 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 fra utsiden av 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 senere. Det er å foretrekke å designe 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