Kursinhalt
C++ OOP
C++ OOP
Das Schlüsselwort 'Friend'
Das friend
-Schlüsselwort steht als einzigartiges Konstrukt da und bietet eine Abweichung von den standardmäßigen Kapselungsprinzipien der objektorientierten Programmierung. Es erlaubt einer Funktion oder einer anderen Klasse, auf private und geschützte Mitglieder einer Klasse zuzugreifen.
main
#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 << std::endl; } int main() { func(); }
Die Verwendung dieses Ansatzes bricht die Kapselung, da es externen Entitäten erlaubt, auf die Mitglieder der Klasse zuzugreifen. Es kann jedoch Situationen geben, in denen dies notwendig ist. Zum Beispiel:
KeyManager
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
In diesem Beispiel wird der encryptionKey privat gehalten, und es wird keine Zugriffsmethode bereitgestellt, da wir den externen Zugriff darauf von außerhalb der Klasse verhindern möchten. Aber was, wenn es notwendig ist, einen externen Algorithmus zum Verschlüsseln und Entschlüsseln zu verwenden, hier kommt das keyword
-Schlüsselwort ins Spiel.
KeyManager
CryptographicAlgorithm
#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 Sie beabsichtigen, es später zu überarbeiten. Es ist vorzuziehen, Ihre Klassen-Beziehungen ohne dessen Verwendung zu gestalten, obwohl spezifische Szenarien dennoch auftreten können.
Danke für Ihr Feedback!