Destruktor

Destruktor

Als Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die beim Erzeugen und Zerstören von Objekten oder Variablen aufgerufen werden. Konstruktoren bringen die Objekte in einen definierten Anfangszustand.

Der Konstruktor (im Englischen auch mit ctor abgekürzt) wird bei der Erzeugung der Variablen aufgerufen. Das Versetzen in den Anfangszustand wird auch als Initialisierung bezeichnet. Dabei besteht in der Regel die Möglichkeit, unterschiedliche Initialisierungsvarianten mittels der Aufrufparameter des Konstruktors auszuwählen. Im Konstruktor können auch Vorbedingungen (siehe Design by Contract) geprüft werden, um sicherzustellen, dass bei der Erstellung die so genannte Invariante erfüllt wird.

Der Destruktor (im Englischen auch mit dtor abgekürzt) wird dagegen bei der Zerstörung der Variablen aufgerufen, und erledigt ggf. Aufräumarbeiten.

Durch Konstruktoren und Destruktoren bleibt der Anschein der Atomarität der Erstellung bzw. des Abbaus gewahrt, während am Punkt der Deklaration die Möglichkeit gegeben wird, die Regeln zur Erstellung und Auflösung von Variablen des betreffenden Typs auszuformulieren.

Typische Anwendungsfälle für Konstruktoren und Destruktoren sind die Belegung und Wiederfreigabe von Systemressourcen, so etwa Netzwerkverbindungen. In manchen Programmiersprachen können Konstruktoren und Destruktoren auch dazu verwendet werden, um für die Variable erforderlichen Speicherplatz anzufordern (im Konstruktor) oder wieder freizugeben (im Destruktor).

Konstruktoren und Destruktoren finden auch bei der objektorientierten Programmierung häufige Anwendung.

Programmiersprachen wie C++ garantieren die Ausführung von Destruktoren, wann immer der Gültigkeitsbereich der Variablen verlassen wird (siehe RAII). Deshalb werden mitunter Konstruktoren und Destruktoren eingesetzt, deren einziger Zweck die Sicherstellung korrekter Ressourcenbilanz im gegebenen Kontext ist, in C++ beispielsweise bei der Template-Klasse auto_ptr.

Programmiersprachen wie Java oder Python und die Entwicklungsplattform .NET verwenden das zu Destruktoren alternative Konzept der Finalisierung, bei der Aufräumarbeiten nicht zum frühest möglichen Zeitpunkt, sondern erst mit dem nächsten Lauf der automatischen Speicherbereinigung (engl. garbage collection) durchgeführt wird. Die Prozedur, die dies erledigt, nennt sich Finalisierungsroutine oder Finalisierer. Finalisierer haben im Vergleich mit Destruktoren einige Einschränkungen. So dürfen z. B. Finalisierer im Allgemeinen nicht auf andere Objekte verweisen, da es sein kann, dass diese bereits abgebaut wurden.

Konstruktortypen

Standardkonstruktor (englisch default constructor oder nullary constructor): leere Parameterliste.

Object()

Kopierkonstruktor (englisch copy constructor): nimmt einen eigenen Objekttyp als Parameter entgegen und erstellt eine Kopie daraus (vergleiche: flache Kopie vs. tiefe Kopie)

Object( Object object )

forwarding constructor oder (als Konstrukt) constructor forwarding: gibt die Parameter an einen anderen Konstruktor weiter und verwendet optional Standardwerte für die fehlenden Parameter. Dies ist insbesondere für Programmiersprachen relevant, die keine Standardwerte unterstützen (z. B. Java, C#). Dieses Konstrukt ist zu unterscheiden von einer Initialisierungsliste, in der wirklich Werte gesetzt werden, während der forwarding constructor nur Werte weitergibt.

Object( int value1 ) : this( value, 0 )

Siehe auch


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Memory leak — Speicherleck (englisch memory leak, gelegentlich auch Speicherloch oder kurz memleak) werden Fehler in einem Computerprogramm genannt, die es ermöglichen, dass ein laufender Prozess einen Speicherbereich belegt, diesen jedoch im Zuge der… …   Deutsch Wikipedia

  • Memoryleak — Speicherleck (englisch memory leak, gelegentlich auch Speicherloch oder kurz memleak) werden Fehler in einem Computerprogramm genannt, die es ermöglichen, dass ein laufender Prozess einen Speicherbereich belegt, diesen jedoch im Zuge der… …   Deutsch Wikipedia

  • Speicherleck — (englisch memory leak, gelegentlich auch Speicherloch oder kurz memleak) werden Fehler in einem Computerprogramm genannt, die es ermöglichen, dass ein laufender Prozess einen Speicherbereich belegt, diesen jedoch im Zuge der Ausführung weder… …   Deutsch Wikipedia

  • C++/CLI — ist eine von Microsoft entwickelte Variante der Programmiersprache C++, die den Zugriff auf die virtuelle Laufzeitumgebung der .NET Plattform mit Hilfe von speziell darauf zugeschnittenen Spracherweiterungen ermöglicht. C++/CLI erfüllt die… …   Deutsch Wikipedia

  • C-Plusplus/CLI — C++/CLI ist eine von Microsoft entwickelte Variante der Programmiersprache C++, die den Zugriff auf die virtuelle Laufzeitumgebung der .NET Plattform mit Hilfe von speziell darauf zugeschnittenen Spracherweiterungen ermöglicht. C++/CLI erfüllt… …   Deutsch Wikipedia

  • Dreierregel — Die Dreierregel, auch bekannt als Die Große Drei oder Regel der Großen Drei bezeichnet in C++ eine Daumenregel, die besagt, dass, wenn eine Klasse oder ein Struct eines der folgenden drei definiert, meistens auch die anderen beiden definiert… …   Deutsch Wikipedia

  • Virtuelle Methode — ist ein Begriff, der im Zusammenhang mit objektorientierten Programmiersprachen benutzt wird. Sie ist eine Methode einer Klasse, deren Einsprungadresse erst zur Laufzeit ermittelt wird. Dieses sogenannte dynamische Binden ermöglicht es, Klassen… …   Deutsch Wikipedia

  • Automatische Speicherbereinigung — Garbage Collection (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem… …   Deutsch Wikipedia

  • Constructor — Als Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die beim Erzeugen und Zerstören von Objekten oder Variablen aufgerufen werden. Konstruktoren bringen die Objekte in einen definierten Anfangszustand …   Deutsch Wikipedia

  • Dreierregel (C++) — Die Dreierregel, auch bekannt als Die Große Drei oder Regel der Großen Drei bezeichnet in C++ eine Daumenregel, die besagt, dass, wenn eine Klasse eines der folgenden drei definiert, meistens auch die anderen beiden definiert werden sollten[1]:… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”