Als Konstrukteur und Destruktoren (aus dem Englischen Auch kurz Ctor BZW. DTOR genannt) Werden in der Programmierung Spezielle Prozeduren BZW. Es wurden Methoden verwendet, die aus den Objekten und Variablen erhalten wurden . Die Konstrukteure wussten, dass Parameter in der Regel argumentfrei sein sollten.
Durch Konstruktor und Destruktoren bleibt der Anschein , wo Atomarität wo Erstellung BZW. Der Abbaus gewahrt. In diesem Fall wurde die Definition der Variablen definiert.
Constructor und Destruktoren kommen Zwar in Manche objektorientierten Programmiersprachen vor, Sind aber ein von der objektorientierten Programmierung ULD Konzept, das Weder Voraussetzungen für OOP ist, noch auf OOP Beschränkt ist sterben. Hier sind die Konstrukteure und Destruktoren im Bereich der prosaischen Programme.
Der Konstrukteur
Die Aufgabe von Konstruktor ist, Objekte in EINEM definierten Anfangszustand zu bringen und so Benötigten Ressourcen zu reservation, insofern this zum zeitpunkt wo Objekterstellung BEREITS Bekannt Ist.
Konstruktor Typ
nullary constructor ist ein Konstruktor ohne Parameter
MeineKlasse ()
In Java wird der Konstruktor Konstruktor untersucht, der mit einem parametrischen Konstruktor (default constructor) vershen ist.
Ein Copykonstruktor Gradienten Erzeugung einge Einer Objektkopie und hat den Eigenen Objekttyp als Parameter (Vergleich der Flach Kopie vs. Tiefe Kopie )
MyClass ( MyClass- Objekt )
Ein Weiterleitungskonstruktor (Genetic Constructor Forwarding Genant) gibt den Parameter an einen anderen Konstruktor weiter und verwendet Standardwerte für den fehlenden Parameter. Dies ist relevant für die Programmierrelevanz , die den Standard Standard unterstützen (B. B. Java ). Dieses Konstrukt ist zu unterscheiden von einer Initialisierungsliste , in der die Werte gesetzt wurden, während der Weiterleitungskonstruktor nur Werte weitergibt.
Objekt ( int- Wert ) : this ( value , 0 ) Object ( int value1 , int value2 )
Beispiele
Java
Klasse Foo { Foo () // Konstruktor { } Foo ( String text ) // Konstruktor mit Argument { - System . aus . println ( Text ); } }
C ++
Klasse Foobar { public : Foobar () // Konstruktor { } Foobar ( int i ) // Konstruktor mit Argument { std :: cout << in << std :: endl ; } };
PHP
/ ** * @see: http://php.net/manual/language.oop5.decon.php * / class Foo { public Funktion __construct ( $ text = null ) // Konstruktor mit Argument und Defaultwert { wenn ( $ text ! == null ) echo $ text ; } Öffentliche Funktion Foo () { // Wird in PHP 5.3.0-5.3.2 als Konstruktor Behandelt // Werden in PHP 5.3.3 und Höher als regulares Methode Behandelt } }
Destraktoren
Destruktoren Ist in der Regel Dafür Verantwortlich, vom Objekt Benutzen Ressourcen freizugeben. Programmiersprachen Wie C ++ Garantie steigenden sterben Ausführung von Destruktoren, wann immer , wo Gültigkeitsbereich in der die Variablen verlassene Wird (siehe Raii ) Grund Regel eingehalten Wird that ein Destruktor die Kontrollfluss nicht Durch Werfen Einer ausnahme (soferne sterben throw ) unterbricht. Deshalb Wird mitunter Konstruktor und Destruktoren eingesetzt, Derens Einziger Zweck Sicherstellung korrekte Ressourcenbilanz im gegebenen Kontext ist sterben, in C ++ beispielsweise bei der Template – Klassen auto_ptr.
Unterschied zur Finalisierung
Programmiersprachen Wie Java oder Python und stirbt Entwicklungsplattform .NET Verwenden das zu Destruktoren alternatives Konzept der Finalisierung , bei den Aufräumarbeiten nicht zum frühest Möglich ZeitPunkt, Sondern erst with the Nächsten Lauf der MATIC Speicherbereinigung (engl. Garbage Collection ) durchgeführt Werden. Die Prozedur, sterben stirbt erledigt, nennt sich Finalisierungsroutine oder Finalisierer. Finalisierer Haben im Vergleich zu Destruktoren einiger Einschränkungen. So Darf beispielsweise Finalisierer im Allgemeinen nicht auf andere Objekte verweisen , wenn es sein Kann, that this BEREITS abgebaut gerechnet wird.
Siehe auch
- Speicherverwaltung
- Initialisierungsliste
Literatur
- Bjarne Stroustrup: Die C ++ Programmiersprache . 4. Aktualisierte und erweiterte Auflage. Addison Wesley , 2000, ISBN 3-8273-1660-X