Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Friend-sleutelwoord | Overzicht van Encapsulatie
C++ OOP
course content

Cursusinhoud

C++ OOP

C++ OOP

1. Fundamenten van OOP in C++
2. Constructors en Destructors
3. Overzicht van Encapsulatie
4. Overzicht van Overerving
5. Overzicht van Polymorfisme

book
Het Friend-sleutelwoord

Het sleutelwoord friend is een uniek construct, dat afwijkt van de standaardprincipes van encapsulatie binnen objectgeoriënteerd programmeren. Het stelt een functie of een andere class in staat om toegang te krijgen tot de private en protected leden van een 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(); }

Het gebruik van deze benadering doorbreekt de encapsulatie omdat het externe entiteiten toegang geeft tot de leden van de class. Er kunnen echter situaties zijn waarin dit noodzakelijk is. Bijvoorbeeld:

KeyManager.h

KeyManager.h

copy
123456
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };

De encryptionKey wordt private gehouden, en er is geen accessor-methode voorzien omdat we externe toegang van buitenaf tot de class willen voorkomen. Maar wat als er noodzaak is om een extern algoritme te gebruiken voor het versleutelen en ontsleutelen? Dan komt het friend-keyword van pas.

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

Het meest voorkomende gebruik van het friend-keyword ontstaat wanneer snelle oplossingen nodig zijn en je van plan bent om dit later te refactoren. Het is aan te raden om je class-relaties te ontwerpen zonder hiervan afhankelijk te zijn, hoewel specifieke scenario's zich nog steeds kunnen voordoen.

question mark

Waar wordt het friend-keyword voor gebruikt?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 6

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

course content

Cursusinhoud

C++ OOP

C++ OOP

1. Fundamenten van OOP in C++
2. Constructors en Destructors
3. Overzicht van Encapsulatie
4. Overzicht van Overerving
5. Overzicht van Polymorfisme

book
Het Friend-sleutelwoord

Het sleutelwoord friend is een uniek construct, dat afwijkt van de standaardprincipes van encapsulatie binnen objectgeoriënteerd programmeren. Het stelt een functie of een andere class in staat om toegang te krijgen tot de private en protected leden van een 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(); }

Het gebruik van deze benadering doorbreekt de encapsulatie omdat het externe entiteiten toegang geeft tot de leden van de class. Er kunnen echter situaties zijn waarin dit noodzakelijk is. Bijvoorbeeld:

KeyManager.h

KeyManager.h

copy
123456
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };

De encryptionKey wordt private gehouden, en er is geen accessor-methode voorzien omdat we externe toegang van buitenaf tot de class willen voorkomen. Maar wat als er noodzaak is om een extern algoritme te gebruiken voor het versleutelen en ontsleutelen? Dan komt het friend-keyword van pas.

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

Het meest voorkomende gebruik van het friend-keyword ontstaat wanneer snelle oplossingen nodig zijn en je van plan bent om dit later te refactoren. Het is aan te raden om je class-relaties te ontwerpen zonder hiervan afhankelijk te zijn, hoewel specifieke scenario's zich nog steeds kunnen voordoen.

question mark

Waar wordt het friend-keyword voor gebruikt?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 6
some-alt