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

C++ Grundkurs

Schlüsselwort decltype

Testen Sie unsere 2018 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die Verwendung des Schlüsselworts decltype ermöglicht es, den deklarierten Datentyp vom Compiler abzufragen.
03:15

Transkript

In dieser Lektion will ich Ihnen die automatische Typableitung decltype vorstellen. decltype bietet neben auto eine weitere Möglichkeit, sich den Typ eines Ausdrucks automatisch vom Compiler bestimmen zu lassen. Die Syntax sieht folgendermaßen aus. Durch decltype 1998 schaut sich der Compiler diesen Ausdruck 1998 an und bestimmt aufgrund dieses Ausdrucks, dass dieser vom Typ int sein muss. Dadurch wird myInt zur Variable vom Typ int und ich kann sie mit dem Wert 2011 initialisieren. decltype hat einen sehr schönen Anwendungsfall im Zusammenhang mit auto. Zusammen mit auto können Sie nämlich den Rückgabetyp eines Funktions-Templates automatisch bestimmen lassen. Automatisch heißt vom Compiler. Vielleicht fragen Sie sich jetzt, was ist der Unterschied zwischen auto und decltype. Tatsächlich sind deren Anwendungsfälle relativ ähnlich. auto ist aber für mich eher das Werkzeug für den Anwendungsentwickler, weil es relativ einfach anzuwenden ist. decltype ist für mich eher das Werkzeug für den Bibliotheksautor. Aus dem einfachen Grund, weil decltype im Gegensatz zu auto nicht das äußerste const oder volatile ignoriert. Jetzt will ich Ihnen noch alles in der Anwendung zeigen. Hier habe ich ein paar Anwendungsfälle für decltype. decltype(5) ermittelt für den Gesamtausdruck den Typ int. So ist i vom Typ int und ich kann den Wert 5 der Variablen i zuweisen. decltype funktioniert auch für Referenzen. intRef wird zu int Referenz. Sie sehen hier rechts jeweils den resultierenden Typ. decltype funktioniert auch für einen Pointer auf int. decltype funktioniert auch für const int, damit wird es zu constInt. decltype funktioniert natürlich auch für static int, somit wird staticintD zu staticInt. decltype funktioniert für z. B. Container aus der Standard Template Library. Das ist ein Container aus der Standard Template Library myVec. Wenn ich den verwende, mir den Ausdruck evaluieren lasse, wird vecD zum konstanten std::vector int. decltype kann man natürlich auch verwenden, um Funktionspointer zu definieren. Hier mache ich es auf die klassische Art und Weise. myAdd1 ist ein Funktionspointer. Dieser Funktionspointer erwartet zwei ints als Parameter und gibt ein int zurück. Das ist genau die Funktion, die ich hier verwende, um den Funktionspointer zu initialisieren. Genau genommen ist das keine Funktion, sondern eine Lambda-Funktion. Die Lambda-Funktion wird durch die beiden eckigen Klammern hier eingeleitet. Dann folgen die zwei Parameter a und b und im Funktionskörper werden diese beiden Werte zusammenaddiert, durch eine einfache Additionsfunktion. Das Gleiche kann ich natürlich auch mit decltype machen. Hier erkläre ich mittels myAdd1 einen Funktionspointer: myAdd2. Dem weise ich wiederum diese Lambda-Funktion zu. Was jetzt noch fehlt, ist die Anwendung meiner zwei Funktionspointer. myAdd1(1,2) ergibt 3. myAdd2 (1,2) ergibt auch 3. Genau sehen Sie hier unten. In dieser Lektion habe ich Ihnen die automatische Typableitung mit decltype vorgestellt. decltype will einen Ausdruck haben, evaluiert ihn und liefert dann den Typ zurück.

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!