Das Schlüsselwort Friend
Swipe um das Menü anzuzeigen
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
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(); }
Die Verwendung dieses Ansatzes durchbricht die Kapselung, da sie externen Entitäten den Zugriff auf die Mitglieder der class erlaubt. Es kann jedoch Situationen geben, in denen dies notwendig ist. Zum Beispiel:
KeyManager.h
123456class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
Der encryptionKey wird private gehalten, und es wird keine Zugriffsmethode bereitgestellt, da der externe 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
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; };
Der häufigste Anwendungsfall für das friend-Schlüsselwort entsteht, wenn schnelle Lösungen erforderlich sind und eine spätere Überarbeitung geplant ist. Es ist vorzuziehen, die Beziehungen zwischen class-Objekten ohne dessen Verwendung zu gestalten, auch wenn bestimmte Szenarien dennoch auftreten können.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen