Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++ Grundkurs

Spezielle Freundschaft aussprechen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Zusätzlich stellt C++ einem Klassen-Template eine Funktionalität zur Verfügung, um eine Freundschaft zu speziellen Klassen- sowie Funktions-Templates auszusprechen.
04:02

Transkript

In dieser Lektion will ich Ihnen die spezielle Freundschaft von Klassen oder Klassen-Template vorstellen. Spezielle Freundschaft entsteht genau dann, wenn eine Klasse oder ein Klassen-Template seine Freundschaft zu Funktions-Templates oder Klassen-Template ausspricht, diese Aussage aber davon abhängig macht, von welchem Typ das Funktions-Template oder das Klassen-Template ist. Das war ein relativ langer Satz. Den will ich aber jetzt gerne am Code genauer erläutern. Hier habe ich ein Funktions-Template und hier habe ich ein Klassen-Template. Jeweils nur die Deklaration davon. Hier habe ich ein Klassen-Template GrantingFriendshipAsClassTemplate und dieses Klassen-Template spricht Freundschaften aus. Zuerst spricht es eine Freundschaft zum Funktions-Template myFriendFunction aus. Macht es aber davon abhängig, dass myFriendFunction in diesem Fall vom Typ double sein muss. myFriendFunction muss also mit dem Typ double instanziiert sein. Das Gleiche gilt für MyFriend, für das Klassen-Template MyFriend. Dieses muss mit dem Typ int instanziiert sein. Hier noch etwas Besonderes. Hier steht der Typ-Parameter T drinnen. Dieser Typ-Parameter T ist der gleiche wie der Typ-Parameter T hier oben. Das bedeutet, dass MyFriend ein Freund von GrantingFriendshipAsClassTemplate genau dann ist, wenn MyFriend mit dem gleichen Typ instanziiert ist wie GrantingFriendshipAsClassTemplate. Das will ich Ihnen jetzt alles noch in der Anwendung zeigen. Hier nochmals die zwei Templates. Das Funktions- und das Klassen-Template, nur jeweils die Deklaration. Die Definition folgt gleich. Hier eine Klasse. Die Klasse spricht ihre Freundschaft aus. Erstens spricht sie ihre Freundschaft gegenüber dem Funktions-Template aus, wenn es für den Typ int instanziiert wurde, spricht ihre Freundschaft gegenüber dem Klassen-Template aus, wenn es auch mit dem Typ int instanziiert wurde. Dann besitzt sie ein Geheimnis My secrete from GrantingFriendshipAsClass. Das können dann entsprechende Funktions-Templates und Klassen-Templates ausplaudern. Das Gleiche nochmals. Diesmal ist aber GrantingFriendshipAsClassTemplate eben ein Klassen-Template, das über T parametrisiert ist. Dieses Klassen-Template spricht wiederum seine Freundschaft gegenüber dem Funktions-Template aus, wenn es mit int instaziiert wurde und, das ist der besondere Fall, es spricht seine Freundschaft gegenüber myFriend aus, wenn es im Typ instanziiert wurde, wie GrantingFriendshipAsClassTemplate selber. Das zeige ich Ihnen gleich in der Anwendung. Zuerst zum Funktions-Template. Das Funktions-Template instanziiert in seinem Funktionskörper die Klasse GrantingFriendshipAsClass myFriend und myFriend kann jetzt die Geheimnisse ausplaudern, da myFriendFunction ein Freund ist von myFriend. GrantingFriendshipAsClassTemplate wird hier instanziiert. Damit habe ich das Klassen-Template instanziiert und ich kann das Geheimnis ausplaudern. Nun zum Klassen-Template. Das Klassen-Template MyFriend instanziiert in seinem Konstruktor hier sowohl die Klasse MyFriend als auch das Klassen-Template myFriendInt, diesmal für int und noch myFriendT, diesmal für den Typ-Parameter T. Das Entscheidende hier ist zu sehen, dass das T hier das gleiche T ist wie hier oben. Das heißt, das sind identische Typen. Nun zeige ich Ihnen noch alles in der Anwendung. myFriendFunction(a), das ist mein Funktions-Template. Da a vom Typ int ist, ist es ein Freund von GrantingFriendshipAsClass und es kann auf die Internas zugreifen. Das Gleiche gilt für MyFriendint. Das instanziiere ich mit int, also ist es ein Freund von GrantingFriendshipAsClassTemplate und damit kann ich auf die Internas My secret from GrantingFriendshipAsClassTemplate zugreifen. Was noch fehlt, ist die Anwendung. Sie sehen, sowohl das Klassen-Template wie auch das Funktions-Template können auf die Internas der Klasse und des Klassen-Templates zugreifen. In dieser Lektion habe ich Ihnen die spezielle Freundschaft von Klassen und Klassen-Template vorgestellt. Spezielle Freundschaft aus dem Grund, weil die Freundschaft davon abhängt, von welchem Typ der Template-Parameter ist.

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!