Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Das Friend-Schlüsselwort | Überblick Über Die Kapselung
C++ OOP

bookDas Friend-Schlüsselwort

Das Schlüsselwort friend stellt ein einzigartiges Konstrukt dar, das eine Abweichung von den üblichen Prinzipien der Kapselung in der objektorientierten Programmierung bietet. Es ermöglicht einer Funktion oder einer anderen class, auf private und protected Mitglieder einer class zuzugreifen.

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

Die Verwendung dieses Ansatzes durchbricht die Kapselung, da sie externen Entitäten den Zugriff auf die Mitglieder der class ermöglicht. Es können jedoch Situationen auftreten, in denen dies notwendig ist. Zum Beispiel:

KeyManager.h

KeyManager.h

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

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

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 in bestimmten Situationen dennoch Bedarf bestehen kann.

question mark

Wofür wird das friend-Schlüsselwort verwendet?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 6

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you give an example of how the friend keyword is used in code?

What are some alternatives to using the friend keyword?

Are there any risks or drawbacks to using the friend keyword?

bookDas Friend-Schlüsselwort

Swipe um das Menü anzuzeigen

Das Schlüsselwort friend stellt ein einzigartiges Konstrukt dar, das eine Abweichung von den üblichen Prinzipien der Kapselung in der objektorientierten Programmierung bietet. Es ermöglicht einer Funktion oder einer anderen class, auf private und protected Mitglieder einer class zuzugreifen.

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

Die Verwendung dieses Ansatzes durchbricht die Kapselung, da sie externen Entitäten den Zugriff auf die Mitglieder der class ermöglicht. Es können jedoch Situationen auftreten, in denen dies notwendig ist. Zum Beispiel:

KeyManager.h

KeyManager.h

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

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

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 in bestimmten Situationen dennoch Bedarf bestehen kann.

question mark

Wofür wird das friend-Schlüsselwort verwendet?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 6
some-alt