C++ Grundkurs

Freunde

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ein Freund einer Klasse besitzt vollständigen Zugriff auf sämtliche Mitglieder einer Klasse. Eine Klasse spricht im Bedarfsfall Freundschaften zu Funktionen, Methoden oder weiteren Klassen aus.
02:52

Transkript

In dieser Lektion will ich Freundschaften einer Klasse vorstellen. Ein Freund einer Klasse hat Zugriff auf alle Mitglieder der Klasse. Seien sie jetzt public, protected oder private. Eine Klasse kann Freundschaften zu Funktionen, Methoden und ganzen Klassen aussprechen. Dabei gelten die folgenden Regeln. Die Deklaration von Freundschaften kann an beliebiger Stelle in der Klassendeklaration stehen. Die Zugriffsrechte, unter der diese Deklaration steht, besitzt keine Bedeutung. Freundschaft wird nicht vererbt und Freundschaft ist nicht transitiv. Was heißt transitiv? Wenn A eine Freundschaft zu B hat und B eine Freundschaft zu C hat, besitzt A nicht automatisch eine Freundschaft zu C. Ich will das hier nochmal explizit betonen. Darauf gehe ich gleich im Beispiel genau ein. Freunde besitzen voll Zugriffsrechte auf die Klasse und damit können sie auch betrügen. Da sind wir schon. Klasse Account ist eine einfache Klasse. Die hat eine Id, die ist privat. Sollte also nicht von außerhalb modifiziert werden. Die Id setzte ich im Konstruktor auf einen Wert, auf eine natürliche Zahl und ich kann die Id abfragen über die Funktion getId. Jetzt hat die Klasse aber Freundschaften zu einer anderen Klasse. Die nennt sich Cheat. Sie spricht eine Freundschaft aus zur globalen Funktion, der freien Funktion cheat und spricht ihre Freundschaft aus zur Methode cheat der Klasse Friend. Jetzt zeige ich Ihnen die Klasse, die Funktion und die Methode. Zuerst die Methode. Das ist die Klasse Friend. Die hat die Methode cheat. Da ich hier Account verwende, muss ich Account vorwärts deklarieren. Die Methode cheat kann ich erst nach der Definition der Klasse Account definieren, da hier das Speicherlayout erst bekannt ist und da ich hier auf die Internas von Account mit acc.id zugreife, geht es erst hier. Was macht die Methode Friend::cheat ? Sie setzt die Id auf 123. Was macht die Methode cheat? Sie setzt die Id auf 456. Zuletzt was macht die Klasse Cheat? Sie setzt in ihrem Konstruktor den Wert von Id auf 789. In diesem Fall ist es ein besonderer Konstruktor, weil der ein Account-Objekt annimmt. Jetzt zeige ich das in der Anwendung und Sie sehen, durch Freunde kann man leicht betrogen werden. Account initialisiere ich mit der Id 2011 und gebe raus mit getId und Sie sehen, das passt. Meine 2011. Wenn ich hier aber implizit ein Friend-Objekt instanziiere und Cheat drauf aufrufe, wird aus der 2011 die 123 Die freie Funktion Cheat macht das Gleiche. Setzt den Wert auf 456. Der Konstruktor von Cheat ist entsprechend bösartig. Er setzt eben die Id auf 789. Eine Klasse kann Freundschaften zu Methoden, freien Funktionen und Klassen selber aussprechen. Bei Freundschaft muss man im Hinterkopf behalten, dass der Freund vollen Zugriff auf die Internas einer Klasse hat.

C++ Grundkurs

Steigen Sie in die mächtige Programmiersprache C++ ein und lernen Sie dabei alle wichtigen Funktionen mit Anwendungsbeispielen kennen.

8 Std. 14 min (147 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!