10 Unterschied zwischen Konstruktor und Destruktor in C++

Contents

Was ist ein Destruktor in C++?

Der Destruktor ist eine Member-Funktion, die sofort aufgerufen wird, wenn ein Objekt zerstört wird. Der Destruktor wird vom Compiler automatisch aufgerufen, wenn das Objekt den Gültigkeitsbereich verlässt, dh wenn eine Funktion beendet wird, werden auch die darin erstellten lokalen Objekte zerstört. Der Destruktor hat denselben Namen wie der Klassenname, aber dem Namen ist eine Tilde (~) vorangestellt. Ein Destruktor hat keinen Rückgabetyp und erhält keine Parameter.

Eigenschaften eines Destruktors in C++

  • Es gibt den Speicher eines Objekts frei.
  • Es braucht keine Argumente.
  • Es wird automatisch beim Verlassen des Bausteins oder beim Beenden des Programms aufgerufen.
  • Sie ermöglichen es Objekten, Code auszuführen, wenn er zerstört wird.
  • Sie werden in umgekehrter Reihenfolge ihrer Entstehung aufgerufen.
  • Es gibt einen einzelnen Destruktor in einer Klasse.
  • Destruktor kann nicht überladen werden.

Was ist ein Konstruktor in C++?

Der Konstruktor in C++ ist eine spezielle Elementfunktion einer Klasse, deren Aufgabe es ist, das Objekt der Klasse zu initialisieren, sie ist besonders, weil sie den gleichen Namen wie die Klasse hat. Er wird Konstruktor genannt, weil er den Wert von Datenelementen zum Zeitpunkt der Objektinitialisierung erstellt. Der Compiler ruft den Konstruktor immer dann auf, wenn ein Objekt erstellt wird. Da ein Konstruktor den Wert für ein Datenelement definiert, hat er keinen Rückgabetyp.

Typen von Konstruktoren in C++

Es gibt 4 Arten von Konstruktoren in C++:

  1. Standardkonstruktoren
  2. Parametrisierte Konstruktoren
  3. Konstruktoren kopieren
  4. Dynamische Konstruktoren

Eigenschaften von Konstruktoren in C++

  • Es hilft, einem Objekt Speicher zuzuweisen.
  • Es kann Argumente annehmen.
  • Es wird automatisch aufgerufen, wenn ein Objekt erstellt wird.
  • Es ermöglicht einem Objekt, einen Wert zu initialisieren, bevor es verwendet wird.
  • Sie werden in der aufeinanderfolgenden Reihenfolge ihrer Entstehung aufgerufen.
  • Es kann mehrere Konstruktoren in einer einzelnen Klasse geben.
  • Der Kopierkonstruktor ermöglicht es dem Konstruktor, ein Objekt von einem anderen Objekt zu deklarieren und zu initialisieren.
  • Es kann überlastet werden.

Unterschiede zwischen Konstruktor und Destruktor in C++

Grundlage des Vergleichs Konstrukteur Destruktor
DefinitionKonstruktoren sind spezielle Klassenmitglieder, die verwendet werden, um Speicher für Objekte zuzuweisen.Ein Destruktor ist ein spezielles Element einer Klasse, das verwendet wird, um Speicher für ein Objekt zuzuweisen.
AufrufmethodeErst wenn das Objekt erstellt wird, wird der Konstruktor aufgerufen.Der Destruktor wird aufgerufen, wenn das Objekt zerstört oder gelöscht wird.
VerwendungszweckDer Konstruktor wird verwendet, um dem Objekt Speicher zuzuweisen.Destruktoren werden verwendet, um Objekten Speicher zuzuweisen. 
 ParameterDer Konstruktor akzeptiert Parameter. Der Destruktor akzeptiert keine Parameter. 
Anzahl der Konstruktoren und DestruktorenEs kann mehrere Konstruktoren mit unterschiedlicher Anzahl von Parametern und unterschiedlichen Parametertypen geben.Es gibt nur einen einzigen Destruktor in der Klasse.
AusführungsgeschwindigkeitDer Name des Konstruktors ist derselbe wie der Name der Klasse. Der Name des Destruktors ist derselbe wie der Klassenname, mit einem Tilde-Symbol (~).
ÜberlastungKonstruktoren können überladen werden.Destruktoren können nicht überladen werden.

Wichtige Punkte

  • Konstruktor und Destruktor sind die speziellen Elementfunktionen der Klasse, die vom C++-Compiler erstellt oder vom Benutzer definiert werden können.
  • Der Konstruktor wird vom Compiler immer dann aufgerufen, wenn das Objekt der Klasse erstellt wird, er weist dem Objekt den Speicher zu und initialisiert die Datenelemente der Klasse.
  • Ein Destruktor wird vom Compiler aufgerufen, wenn das Objekt zerstört wird, und seine Hauptfunktion besteht darin, den Speicher des Objekts freizugeben.
  • Konstruktoren haben denselben Namen wie die Klasse, während Destruktoren denselben Namen wie die Klasse mit dem Präfix eines Tilde-Operators (~) haben.
  • Sowohl Konstruktor als auch Destruktor können als öffentlich, privat oder geschützt definiert werden. Aber es ist besser, den Konstruktor als öffentlich zu deklarieren.
  • Der Konstruktor kann Parameter haben, aber der Destruktor erhält keine Parameter.

osky