Kursinhalt
C++ OOP
C++ OOP
Das Schlüsselwort Friend
Das Schlüsselwort friend
stellt ein einzigartiges Konstrukt dar und bietet eine Abweichung von den üblichen Prinzipien der Kapselung in der objektorientierten Programmierung. Es ermöglicht einer Funktion oder einer anderen class
, auf private
und protected
Mitglieder einer class
zuzugreifen.
main.cpp
#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(); }
Die Verwendung dieses Ansatzes durchbricht die Kapselung, da dadurch externen Entitäten der Zugriff auf die Mitglieder der class
ermöglicht wird. Es können jedoch Situationen auftreten, in denen dies notwendig ist. Zum Beispiel:
KeyManager.h
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
Der encryptionKey wird als private
deklariert, und es wird keine Zugriffsmethode bereitgestellt, da ein externer Zugriff von außerhalb der class
verhindert werden soll. Falls jedoch die Notwendigkeit besteht, einen externen Algorithmus zum Verschlüsseln und Entschlüsseln zu verwenden, kommt das friend-keyword
zum Einsatz.
KeyManager.h
CryptographicAlgorithm.h
#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; };
Der häufigste Anwendungsfall für das friend
-Schlüsselwort tritt auf, wenn schnelle Lösungen erforderlich sind und eine spätere Überarbeitung geplant ist. Es ist vorzuziehen, die Beziehungen zwischen Ihren class
-Objekten ohne dessen Verwendung zu gestalten, auch wenn bestimmte Szenarien dennoch auftreten können.
Danke für Ihr Feedback!