Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++ Grundkurs

Allgemeine Freundschaft aussprechen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ein Klassen-Template verfügt über die Fähigkeit, Freundschaften zu weiteren allgemeinen Klassen- oder Funktions-Templates auszusprechen.
04:04

Transkript

In dieser Lektion will ich die allgemeine Freundschaft von Klassen und auch Klassen-Templates vorstellen. Eine Klasse oder Klassen-Template kann seine Freundschaft gegenüber jeder Instanz eines Klassen- oder Funktions-Templates aussprechen. Weil das gegenüber jeder Instanz ist, nennt es sich auch allgemeine Freundschaft. Ich zeige es hier konkret am Beispiel. Hier habe ich ein Funktions-Template und einen Klassen-Template. Das Funktions-Template heißt myFriendFunction, ist über den Typ-Parameter T parametrisiert. Das Klassen-Template heißt MyFriend und ist vom Typ-Parameter auch wiederum T parametrisiert. Jetzt habe ich hier ein Klassen-Template GrantingFriendshipAsClassTemplate. Dieses Klassen-Template will Freundschaft aussprechen. Das tut es dadurch, dass es im Funktionskörper des Klassen-Templates den Aufruf firend int myFriendFunction U verwendet. Das heißt, durch diesen Aufruf sagt die Klasse GrantingFriendshipAsClassTemplate myFriendFunction soll Freund sein. Das Gleiche sagt sie fürs Klassen-Template MyFriend. Auf eine Besonderheit will ich hier hinweisen. Das T und das U sind hier verschieden aus gutem Grunde. Wenn der Template-Parameter von GrantingFriendshipAsClassTemplate T hier unten verwendet werden würde, also auch als T, dann hieße das, dass GrantingFriendshipAsClassTemplate Freundschaft nur zu Funktions-Templates aussprechen würde, die mit dem gleichen Typ parametrisiert sind, also wenn das Class-Template mit int parametrisiert werden würde, würde es nur Freundschaft zu myFriendFunction aussprechen, das auch mit int parametrisiert ist. Ich will aber hier die allgemeine Freundschaft aussprechen. Das zeige ich Ihnen jetzt am Beispiel. Hier habe ich wieder mein Funktions-Template myFriendFunction, mein Class-Template nur vorwärts deklariert, weil ich jetzt zweimal verwenden will. Erstens in einer Klasse. Diese Klasse spricht Freundschaft aus gegenüber dem Funktions-Template in einer allgemeinen Art und dem Klassen- Template auch in einer allgemeinen Art. Diese Klasse besitzt ihr Geheimins secret{‘My secret from GrantingFriendshipAsClass‘}. Gibt einfach ihren Namen aus, damit ich nachher zeigen kann, wie ich von diesen beiden Instanzen auf die Internas der Klasse zugreifen kann. Nun zum zweiten Beispiel. In diesem Fall habe ich ein Klassen-Template über T parametrisiert und das Klassen-Template spricht auch seine Freundschaft aus dieses Mal hier zum Funktions-Template und hier zum Klassen-Template und noch einmal explizit U muss unterschiedlich zu T sein, damit es eine allgemeine Freundschaft gibt, sonst wäre es eine spezielle Freundschaft, die an einem Typ gebunden wäre. Die zwei Templates, das Funktions-Template hier und das Class-Template hier, sind hier oben nur deklariert. Jetzt folgt noch die Definition. Zuerst das Funktions-Template myFriendFunction. Das ruft in seinem Funktionskörper den Konstruktor von GrantingFriendshipAsClass auf, instanziiert MyFriend, ist eine Klasse und kann nun von MyFriend secret ausplaudern. Das ganz Gleiche kann es auch mit dem Klassen-Template myFriend. In diesem Fall instanziiert es mit double und dann kann es auch wieder das secret ausplaudern. Das war das Funktions-Template. Nun folgt das Klassen-Template. Das Klassen-Template MyFriend, das auch Freund ist, in diesem Fall von GrantingFriendshipAsClass. Was macht es? Im Konstruktor dieses Klassen-Template instanziiere ich myFriend und instanziiere ich auch das Klassen-Template myFriend1. Beide Objekte erlauben es mir, das secret auszugeben. Nun zeige ich es Ihnen noch in der Anwendung. Jetzt kann ich myFriendFunction aufrufen und myFriendFunction ist unter der Decke ein Funktions-Template und ich kann secrete von GrantingFriendshipAsClass und GrantingFriendshipAsClassTemplate ausplaudern. Das Gleiche gilt fürs Klassen-Template myFriend. Diesmal plaudere ich die gleichen Geheimnisse nochmals aus. In dieser Lektion habe ich Ihnen die allgemeine Freundschaft von Klassen und Klassen-Template vorgestellt. Klassen und Klassen-Template können ihre Freundschaft gegenüber Funktions-Templates und Klassen-Templates aussprechen.

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!