C++-Konstruktoren verstehen: Standard-, Parameter- und Kopierkonstruktor erklärt
C++-Konstruktoren verstehen
Dieses Tutorial taucht in C++-Konstruktoren ein – was sie sind, warum sie wichtig sind, und wie man Standard-, Parameter- und Kopierkonstruktoren mit klaren Beispielen implementiert.
Ein Konstruktor ist eine spezielle Mitgliedsfunktion, die automatisch ausgeführt wird, wenn ein Objekt instanziiert wird. In C++ teilt der Konstruktor seinen Namen mit der Klasse und spezifiziert keinen Rückgabetyp.
class Wall
{
public:
// Konstruktor
Wall()
{
// Initialisierungscode
}
};
Der Konstruktor muss:
- Denselben Namen wie die Klasse haben.
- Keinen Rückgabetyp deklarieren.
- Zugänglich sein (typischerweise
public).
Standardkonstruktor
Ein Konstruktor ohne Parameter wird als Standardkonstruktor bezeichnet. Das obige Wall()-Beispiel ist einer.
Beispiel 1: Standardkonstruktor
// Demonstration eines Standardkonstruktors
#include <iostream>
using namespace std;
class Wall
{
private:
double length;
public:
// Standardkonstruktor
Wall()
{
length = 5.5;
cout << "Creating a wall." << endl;
cout << "Length = " << length << endl;
}
};
int main()
{
Wall wall1;
return 0;
}
Ausgabe
Creating a Wall Length = 5.5
Wenn wall1 instanziiert wird, setzt der Standardkonstruktor length auf 5.5 und gibt die Meldungen aus.
Hinweis: Wenn einer Klasse ein expliziter Konstruktor fehlt, generiert der Compiler automatisch einen Standardkonstruktor, der nichts tut.
Parameterisierter Konstruktor
Parameterisierte Konstruktoren empfangen Argumente, um Mitgliedsdaten bei der Objekterstellung zu initialisieren. Sie sind der bevorzugte Weg, um den Zustand eines Objekts einzurichten.
Beispiel 2: Parameterisierter Konstruktor
// Flächenberechnung einer Wand mit parameterisiertem Konstruktor
#include <iostream>
using namespace std;
class Wall
{
private:
double length;
double height;
public:
// Parameterisierter Konstruktor
Wall(double len, double hgt)
{
length = len;
height = hgt;
}
double calculateArea()
{
return length * height;
}
};
int main()
{
Wall wall1(10.5, 8.6);
Wall wall2(8.5, 6.3);
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
Ausgabe
Area of Wall 1: 90.3 Area of Wall 2: 53.55
Der Konstruktor weist die übergebenen Werte length und height zu, was calculateArea() ermöglicht, die Wandfläche zu berechnen.
Kopierkonstruktor
Ein Kopierkonstruktor erstellt ein neues Objekt als exakte Kopie eines bestehenden. Er wird aufgerufen, wenn ein Objekt von einem anderen desselben Typs initialisiert wird.
Beispiel 3: Kopierkonstruktor
#include <iostream>
using namespace std;
class Wall
{
private:
double length;
double height;
public:
// Parameterisierter Konstruktor
Wall(double len, double hgt)
{
length = len;
height = hgt;
}
// Kopierkonstruktor
Wall(Wall &obj)
{
length = obj.length;
height = obj.height;
}
double calculateArea()
{
return length * height;
}
};
int main()
{
Wall wall1(10.5, 8.6);
Wall wall2 = wall1; // Ruft Kopierkonstruktor auf
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
Ausgabe
Area of Wall 1: 90.3 Area of Wall 2: 90.3
Der Kopierkonstruktor kopiert length und height von wall1 zu wall2, sodass beide Objekte identischen Zustand haben.
Hinweis: Konstruktoren initialisieren primär Objekte, ermöglichen aber auch benutzerdefinierte Logik während der Objekterstellung.
C Sprache
- C# Konstruktoren: Typen, Beispiele und fortgeschrittene Muster
- Konstruktorüberladung in C# meistern
- C++-Datentypen verstehen: Grundlagen, Modifizierer und Best Practices
- C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
- C++-Kommentare: Best Practices für lesbaren, wartbaren Code
- C++ Klassentemplates meistern: Ein praktischer Leitfaden
- Java Konstruktoren meistern: Typen, Verwendung und praktische Beispiele
- Java Konstruktoren verstehen: Initialisierung und Best Practices
- C++ Programmiersprache: Überblick & Kernfeatures
- C++ Konstanten & Literale: Typen, Syntax & Best Practices