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

C++ Grundkurs

Nichttypenparameter

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die Nichttypenparameter stellen einen weiteren Template-Parameter in C++ dar. Die Programmiersprache evaluiert diese zur Compile-Zeit. Standardmäßig handelt es sich hierbei um ganzzahlige Konstanten.
03:05

Transkript

In dieser Lektion möchte ich Ihnen Nichtypen als Template-Parameter vorstellen. Nichttyp-Parameter sind Template-Parameter, die zur Kompilierzeit evaluiert werden können. Das sind die folgenden Typen: ganzzahlige Konstanten und Aufzählungen, Zeiger auf Objekte, Funktionen, aber auch Attribute und Methoden von Klassentypen, Referenzen auf Objekte und Funktionen und Null-Pointer-Konstanten. Ich will explizit darauf hinweisen, Fließkommazahlen und Strings sind als Nichttyp-Parameter nicht erlaubt. Die Theorie will ich wieder in der Praxis zeigen. Hier habe ich ein Klassen-Template, das ein char annimmt. Hier habe ich ein Klassen-Template, das einen Function-Pointer annimmt. Hier habe ich ein Klassen-Template, das eine Referenz annimmt und hier habe ich ein Klassen-Template, das einen Null-Pointer annimmt. Nun gehe ich mehr ins Detail. AcceptChar nimmt, wie gesagt, ein Zeichen an. Und was macht es im Konstruktor? Da gibt es eine lesbare Repräsentation des Zeichens aus. Das ist dieser Ausdruck hier. Um typeid von 10 zu verwenden, benötige ich den Header typeinfo. Dann kommt AcceptFunction. AcceptFunction erwartet ein Funktionszeiger auf eine Funktion, die int annimmt und ein int zurückgibt. AcceptReference erwartete eine Referenz auf ein Array. Das Array muss die Länge 5 besitzen und vom Typ int sein. Zum Schluss noch std::nullptr. AcceptNullptr erwartet eben einen Null-Pointer. Jetzt komme ich schon zur Anwendung. Hier definiere ich eine Funktion myFunc, die genau der Syntax entspricht, die AcceptFunction erwartet. Also myFunc erwartet ein int und gibt ein int zurück. Das Entsprechende gilt für das Array. Das Array hier besitzt die Länge 5 und ist vom Typ int. Jetzt kann ich alle Klassen-Templates von oben instanziieren. AcceptChar, dann hier für myFunc mit dem Funktions-Pointer, arr mit der Referenz auf ein Array und nullpt natürlich mit einem Null-Pointer. Das Ganze zeige ich Ihnen jetzt noch in der Anwendung und Sie sehen, die String-Repräsentation eines Zeichens ist relativ schön zu lesen. Da steht einfach c drinnen. Aber hier wird es dann relativ hässlich. Der Funktions-Pointer auf die Funktion, die int annimmt und int zurückgibt, bekomme ich vom Compiler in dieser Form repräsentiert. Ist nicht wirklich lesbar. Eine Referenz auf ein Array der Länge 5, das int zurückgibt, encodiert er sozusagen auf diese Art und Weise. Den Null-Pointer macht er dadurch, dass er Dn schreibt. Diese Strings, die Sie hier sehen c bis Dn, sind compilerabhängig. Das heißt, ein anderer Compiler oder vielleicht eine neuere Version vom gcc, ich habe aktuell den 4.8., wird unter Umständen andere Strings rausgeben. In dieser Lektion habe ich Ihnen Nichttyp-Template-Parameter vorgestellt. Nichttyp-Template-Parameter können verschiedene Dinge sein. Sie sind mal Zeichen, natürliche Zahlen, aber auch Funktionszeiger, Referenzen, aber auch eine Null-Pointer-Konstante.

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!