In diesem Tutorial lernen wir anhand von Beispielen, wie Konstruktoren in C ++ überladen werden.
Konstruktoren können auf ähnliche Weise wie Funktionsüberladungen überladen werden.
Überladene Konstruktoren haben den gleichen Namen (Name der Klasse), aber die unterschiedliche Anzahl von Argumenten. Abhängig von der Anzahl und Art der übergebenen Argumente wird der entsprechende Konstruktor aufgerufen.
Beispiel 1: Konstruktorüberladung
// C++ program to demonstrate constructor overloading #include using namespace std; class Person ( private: int age; public: // 1. Constructor with no arguments Person() ( age = 20; ) // 2. Constructor with an argument Person(int a) ( age = a; ) int getAge() ( return age; ) ); int main() ( Person person1, person2(45); cout << "Person1 Age = " << person1.getAge() << endl; cout << "Person2 Age = " << person2.getAge() << endl; return 0; )
Ausgabe
Person1 Alter = 20 Person2 Alter = 45
In diesem Programm haben wir eine Klasse erstellt Person
, die ein einzelnes variables Alter hat.
Wir haben auch zwei Konstruktoren definiert Person()
und Person(int a)
:
- Wenn das Objekt person1 erstellt wird, wird der erste Konstruktor aufgerufen, da wir kein Argument übergeben haben. Dieser Konstruktor initialisiert das Alter auf
20
. - Wenn person2 erstellt wird, wird der zweite Konstruktor aufgerufen, da wir
45
als Argument übergeben haben. Dieser Konstruktor initialisiert das Alter auf45
.
Die Funktion getAge()
gibt den Wert von age zurück und wir verwenden ihn, um das Alter von person1 und person2 zu drucken.
Beispiel 2: Konstruktorüberladung
// C++ program to demonstrate constructor overloading #include using namespace std; class Room ( private: double length; double breadth; public: // 1. Constructor with no arguments Room() ( length = 6.9; breadth = 4.2; ) // 2. Constructor with two arguments Room(double l, double b) ( length = l; breadth = b; ) // 3. Constructor with one argument Room(double len) ( length = len; breadth = 7.2; ) double calculateArea() ( return length * breadth; ) ); int main() ( Room room1, room2(8.2, 6.6), room3(8.2); cout << "When no argument is passed: " << endl; cout << "Area of room = " << room1.calculateArea() << endl; cout << "When (8.2, 6.6) is passed." << endl; cout << "Area of room = " << room2.calculateArea() << endl; cout << "When breadth is fixed to 7.2 and (8.2) is passed:" << endl; cout << "Area of room = " << room3.calculateArea() << endl; return 0; )
Ausgabe
Wenn kein Argument übergeben wird: Raumfläche = 28,98 Wenn (8.2, 6.6) übergeben wird. Raumfläche = 54,12 Wenn die Breite auf 7,2 festgelegt ist und (8.2) überschritten wird: Raumfläche = 59,04
- Wenn room1 erstellt wird, wird der erste Konstruktor aufgerufen. Länge wird auf
6.9
und Breite auf initialisiert4.2
. - Wenn room2 erstellt wird, wird der zweite Konstruktor aufgerufen. Wir haben die Argumente übergeben
8.2
und6.6
. Die Länge wird mit dem ersten Argument8.2
und die Breite mit initialisiert6.6
. - Wenn room3 erstellt wird, wird der dritte Konstruktor aufgerufen. Wir haben ein Argument übergeben
8.2
. Länge wird mit dem Argument initialisiert8.2
. Die Breite wird7.2
standardmäßig auf initialisiert .
Empfohlenes Tutorial : Überladen von C ++ - Funktionen.