C++ Grundkurs

Was sind Konstruktoren?

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Konstruktoren stellen in C++ spezielle Methoden dar, mit denen Instanzen einer Klasse initialisiert werden.
04:38

Transkript

In dieser Lektion gehe ich auf "Konstruktoren" ein. Konstruktoren sind spezielle Methoden, mit denen Instanzen einer Klasse initialisiert werden. Konstruktoren werden immer dann aufgerufen, wenn ein Objekt erzeugt wird. Das kann implizit passieren durch den Compiler oder explizit durch Sie, indem Sie z.B. "new" oder "new für Arrays" aufrufen. Wieso sind Konstruktoren besondere Methoden? Zum einen besitzen sie den gleichen Namen wie die Klasse und sie geben keinen Wert zurück. Zum anderen werden sie automatisch bei Bedarf vom Compiler erzeugt. Wenn Sie einen Konstruktor selber definieren, können Sie das innerhalb oder außerhalb der Klasse machen. Konstruktoren werden gerne überladen. Das heißt, Sie können mehrere Konstruktoren definieren, die Sie mit verschiedenen Typen aufrufen können. Zum Beispiel können Sie ein Objekt mit einem "int" und mit einem "String" initialisiert instanziieren. Jetzt gehe ich noch ein bisschen auf "Default"-Konstruktoren ein. Ein Default-Konstruktor ist ein Konstruktor, der kein Argument erwartet, den Sie also ohne Argument aufrufen können. Sie können das auf zwei Arten machen. Sie können es statisch machen durch das Account "account;" hier. Das heißt, das Objekt wird automatisch auf den "Stack" angelegt. Oder Sie können es dynamisch machen mit "new Account". Dadurch wird das Objekt auf den Heap oder auch auf den freien Speicher angelegt und Sie haben ein Handler drauf, einen Zeiger drauf. Das ist das "p" hier. Besonders am Konstruktor ist auch, wenn Sie eine Klasse haben, die von anderen Klassen abgeleitet ist, wird durch einen Aufruf eines Konstruktors eine Folge von weiteren Konstruktoren aufgerufen, einfach die Konstruktoren aller Basisklassen. Hier noch eine Warnung zum Schluss. In gewissen Kontexten benötigt der Compiler den Default-Konstruktor. Der Default-Konstruktor ist der, der kein Argument erwartet. Das ist der Fall, wenn Sie ein "Array" von Objekten anlegen oder wenn Sie auch automatisch Objekte in "Containern" der "Standard Template Library" erzeugen. Jetzt zeige ich Ihnen das Ganze noch in der Anwendung. Hier habe ich eine Klasse Account, relativ einfach gestrickt. Die hat zwei Konstruktoren. Sie sehen, dieser Konstruktor hier bekommt kein Argument. Das ist also ein "Default"-Konstruktor. Dieser Konstruktor benötigt ein "double" und damit erzeuge ich eine Instanz vom Typ Account. Hier gibt sie dann "Account: this" heraus im Konstruktor und hier gibt sie "Account(double)" aus im Konstruktor. "this" ist sozusagen eine Referenz auf das Objekt selber. In diesem Fall gibt es die Adresse des Objektes heraus. Das ist in dem Zusammenhang ganz interessant, weil ich jetzt Objekte sowohl auf dem "Stack" wie auch auf dem "freien Speicher" oder auch "Heap" anlege. Hier sehen Sie Account "account1". Das lege ich auf dem "Stack" an. Hier "account2", da allokiere ich Speicher. Instanziiere in den Speicher "account2" und damit ist es auf dem "Heap" angelegt. Wenn Sie hier unten die Ausgabe von diesem Programm anschauen, sehen Sie auch, auf dem Stack gibt es einen ganz andere Speicheradresse wie auf dem Heap. Die Werte sind natürlich abhängig von dem Rechner, auf dem Sie es anlegen. Bei mir sind sie so. Das Gleiche mache ich jetzt nochmal. Diesmal verwende ich aber nicht den Default-Konstruktor, sondern verwenden den Konstruktor, der ein double erwartet. 100 und 100, dadurch wird dieser Konstruktor hier aufgerufen. Sie sehen auch, die Ausgabe ist entsprechend. Ich bekomme in diesem Fall Account(double) bzw. auch Account(double) und, wenn Sie die Adressen ganz genau anschauen, sehen Sie auch, dass der Account hier unmittelbar nach diesem Account hier im Speicher liegt. Das Gleiche trifft auf diesen zu, der genauso wie dieser oben, direkt auf den Heap liegt. Jetzt lege ich noch einen "Array" von Objekten vom Typ Account an. Sie sehen, das Array beinhaltet fünf Elemente. Das Besondere daran ist, hier kann ich natürlich kein Argument angeben. Das heißt, ich kann nur den Default-Konstruktor verwenden. Das ist auch der Grund, dass in diesem Fall der Default-Konstruktor verwendet wird. Anders ausgedrückt, wenn ich hier keinen Default-Konstruktor hätte, würde mir dieser Aufruf hier eine Fehlermeldung produzieren. Der Compiler wird es also nicht übersetzen. In dieser Lektion habe ich Ihnen "Konstruktoren" vorgestellt. Insbesondere habe ich Ihnen den "Default"-Konstruktor vorgestellt, der immer dann verwendet wird, wenn Sie kein Argument angeben. "Konstruktoren" sind besondere Methoden in "C++". Besonders aus dem Grund, da sie zum einen der Compiler automatisch erzeugt, und da sie zum anderen auch keinen Wert zurückgeben und so heißen müssen wie die Klasse selber.

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!