Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Friend-nøkkelordet | Oversikt Over Innkapsling
C++ OOP
course content

Kursinnhold

C++ OOP

C++ OOP

1. Grunnleggende om OOP i C++
2. Konstruktører og Destruktører
3. Oversikt Over Innkapsling
4. Oversikt over Arv
5. Oversikt over Polymorfisme

book
Friend-nøkkelordet

Nøkkelordet friend er en unik konstruksjon som skiller seg 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

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

Denne tilnærmingen bryter innkapslingen fordi den lar eksterne enheter få tilgang til class-medlemmer. Likevel kan det finnes situasjoner hvor dette er nødvendig. For eksempel:

KeyManager.h

KeyManager.h

copy
123456
class 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 utenfor 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

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; };

Den vanligste bruken av friend-nøkkelordet oppstår når raske løsninger er nødvendige, og du har planer om å refaktorere det senere. Det er å foretrekke å designe dine class-relasjoner uten å være avhengig av dette, selv om spesifikke situasjoner fortsatt kan oppstå.

question mark

Hva brukes friend-nøkkelordet til?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

course content

Kursinnhold

C++ OOP

C++ OOP

1. Grunnleggende om OOP i C++
2. Konstruktører og Destruktører
3. Oversikt Over Innkapsling
4. Oversikt over Arv
5. Oversikt over Polymorfisme

book
Friend-nøkkelordet

Nøkkelordet friend er en unik konstruksjon som skiller seg 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

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

Denne tilnærmingen bryter innkapslingen fordi den lar eksterne enheter få tilgang til class-medlemmer. Likevel kan det finnes situasjoner hvor dette er nødvendig. For eksempel:

KeyManager.h

KeyManager.h

copy
123456
class 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 utenfor 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

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; };

Den vanligste bruken av friend-nøkkelordet oppstår når raske løsninger er nødvendige, og du har planer om å refaktorere det senere. Det er å foretrekke å designe dine class-relasjoner uten å være avhengig av dette, selv om spesifikke situasjoner fortsatt kan oppstå.

question mark

Hva brukes friend-nøkkelordet til?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 6
some-alt