logo

Konstruktoren in C++

Konstruktor in C++ ist eine spezielle Methode, die zum Zeitpunkt der Objekterstellung automatisch aufgerufen wird. Es wird allgemein verwendet, um die Datenelemente neuer Objekte zu initialisieren. Der Konstruktor in C++ hat denselben Namen wie die Klasse oder Struktur. Er konstruiert die Werte, d. h. stellt Daten für das Objekt bereit, weshalb er als Konstruktor bezeichnet wird.

  • Der Konstruktor ist eine Mitgliedsfunktion einer Klasse, deren Name mit dem Klassennamen identisch ist.
  • Konstruktor ist eine spezielle Art von Mitgliedsfunktion, die verwendet wird, um die Datenmitglieder für ein Objekt einer Klasse automatisch zu initialisieren, wenn ein Objekt derselben Klasse erstellt wird.
  • Der Konstruktor wird zum Zeitpunkt der Objekterstellung aufgerufen. Er konstruiert die Werte, d. h. stellt Daten für das Objekt bereit, weshalb er als Konstruktor bezeichnet wird.
  • Konstruktoren geben keinen Wert zurück, daher haben sie keinen Rückgabetyp.
  • Ein Konstruktor wird automatisch aufgerufen, wenn wir das Objekt der Klasse erstellen.
  • Konstruktoren können überladen sein.
  • Ein Konstruktor kann nicht als virtuell deklariert werden.

Syntax von Konstruktoren in C++

Der Prototyp des Konstruktors sieht so aus:

 (list-of-parameters);>

Der Konstruktor kann innerhalb der Klassendeklaration oder außerhalb der Klassendeklaration definiert werden



Syntax zum Definieren des Konstruktors innerhalb der Klasse

 (list-of-parameters) {     // constructor definition  }>

Syntax zum Definieren des Konstruktors außerhalb der Klasse

: :(list-of-parameters) {    // constructor definition  }>

Beispiele für Konstruktoren in C++

Die folgenden Beispiele zeigen, wie Konstruktoren für eine Klasse in C++ deklariert werden:

Beispiel 1: Definieren des Konstruktors innerhalb der Klasse

C++




// defining the constructor within the class> #include> using> namespace> std;> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >// constructor> >student()> >{> >cout <<>'Enter the RollNo:'>;> >cin>>rno;> >cout <<>'Enter the Name:'>;> >cin>> Name;> >cout <<>'Enter the Fee:'>;> >cin>> Gebühr;> >}> >void> display()> >{> >cout << endl << rno <<>' '> << name <<>' '> << fee;> >}> };> int> main()> {> >student s;>// constructor gets called automatically when> >// we create the object of the class> >s.display();> >return> 0;> }>

>

>

Ausgabe

Enter the RollNo:121 Enter the Name:Geeks Enter the Fee:5000 121 Geeks 5000>

Beispiel 2: Definieren des Konstruktors außerhalb der Klasse

C++




// defining the constructor outside the class> #include> using> namespace> std;> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >// constructor declaration only> >student();> >void> display();> };> // outside definition of constructor> student::student()> {> >cout <<>'Enter the RollNo:'>;> >cin>>rno;> >cout <<>'Enter the Name:'>;> >cin>> Name;> >cout <<>'Enter the Fee:'>;> >cin>> Gebühr;> }> void> student::display()> {> >cout << endl << rno <<>' '> << name <<>' '> << fee;> }> // driver code> int> main()> {> >student s;> >s.display();> >return> 0;> }>

>

>

Ausgabe

Enter the RollNo:11 Enter the Name:Aman Enter the Fee:10111 11 Aman 10111>

Notiz: Wir können den Konstruktor außerhalb der Klasse definieren als im Einklang um es der Definition in der Klasse äquivalent zu machen. Aber beachten Sie das im Einklang ist keine Anweisung an den Compiler, sondern lediglich eine Anfrage, die der Compiler je nach den Umständen umsetzen kann oder nicht.

Eigenschaften von Konstruktoren in C++

Im Folgenden sind einige Hauptmerkmale der Konstruktoren in C++ aufgeführt:

  • Der Name des Konstruktors ist derselbe wie sein Klassenname.
  • Konstruktoren werden meist im öffentlichen Abschnitt der Klasse deklariert, obwohl sie auch im privaten Abschnitt der Klasse deklariert werden können.
  • Konstruktoren geben keine Werte zurück; Daher haben sie keinen Rückgabetyp.
  • Ein Konstruktor wird automatisch aufgerufen, wenn wir das Objekt der Klasse erstellen.
  • Konstruktoren können überladen sein.
  • Ein Konstruktor kann nicht als virtuell deklariert werden.
  • Ein Konstruktor kann nicht vererbt werden.
  • Auf die Adressen des Konstruktors kann nicht verwiesen werden.
  • Der Konstruktor führt implizite Aufrufe durch neu Und löschen Operatoren während der Speicherzuweisung.

Konstruktortypen in C++

Konstruktoren können danach klassifiziert werden, in welchen Situationen sie verwendet werden. In C++ gibt es vier Arten von Konstruktoren:

  1. Standardkonstruktor
  2. Parametrisierter Konstruktor
  3. Konstruktor kopieren
  4. Konstruktor verschieben

Lassen Sie uns die Konstruktortypen in C++ anhand eines Beispiels aus der Praxis verstehen. Angenommen, Sie gehen in ein Geschäft, um einen Marker zu kaufen. Welche Möglichkeiten gibt es, wenn Sie einen Markierer kaufen möchten? Beim ersten Mal gehst du in ein Geschäft und sagst: „Gib mir einen Marker.“ Wenn Sie also sagen: „Geben Sie mir einen Marker“, bedeutet dies, dass Sie nicht den Markennamen und die Farbe festgelegt haben. Sie haben nichts erwähnt und nur gesagt, dass Sie einen Marker möchten. Als wir also sagten, ich möchte einen Marker, was auch immer der häufig verkaufte Marker auf dem Markt oder in seinem Geschäft ist, wird er ihn einfach übergeben. Und das ist ein Standardkonstruktor!

Die zweite Methode besteht darin, in ein Geschäft zu gehen und zu sagen, dass ich einen roten Stift mit der Marke XYZ haben möchte. Wenn Sie das also erwähnen, wird er Ihnen diesen Marker geben. In diesem Fall haben Sie also die Parameter angegeben. Und das ist ein parametrisierter Konstruktor!

Beim dritten Mal gehst du in ein Geschäft und sagst, ich möchte so einen Marker (einen physischen Marker auf deiner Hand). Der Ladenbesitzer wird diese Markierung also sehen. Okay, und er wird dir einen neuen Marker geben. Also Kopie dieses Markers. Und genau das ist ein Kopierkonstruktor!

Gehen Sie nun davon aus, dass Sie keinen neuen Marker kaufen, sondern den Marker Ihres Freundes übernehmen. Es bedeutet, sich die bereits vorhandenen Ressourcen zu eigen zu machen, anstatt sich neue anzuschaffen. Das ist ein Move-Konstruktor!

1. Standardkonstruktor in C++

A Standardkonstruktor ist ein Konstruktor, der kein Argument akzeptiert. Es hat keine Parameter. Er wird auch als Null-Argument-Konstruktor bezeichnet.

Syntax des Standardkonstruktors

className() {     // body_of_constructor  }>

Beispiele für Standardkonstruktoren

Die folgenden Beispiele veranschaulichen die Verwendung der Standardkonstruktoren in C++.

Beispiel 1:

CPP




// C++ program to illustrate the concept of default> // constructors> #include> using> namespace> std;> class> construct {> public>:> >int> a, b;> >// Default Constructor> >construct()> >{> >a = 10;> >b = 20;> >}> };> int> main()> {> >// Default constructor called automatically> >// when the object is created> >construct c;> >cout <<>'a: '> << c.a << endl <<>'b: '> << c.b;> >return> 1;> }>

Programmiermuster Java

>

>

Ausgabe

a: 10 b: 20>

Notiz: Auch wenn wir keinen Konstruktor explizit definieren, stellt der Compiler implizit automatisch einen Standardkonstruktor bereit.

Beispiel 2:

C++




// C++ program to demonstrate the implicit default> // constructor> #include> using> namespace> std;> // class> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> };> int> main()> {> >// creating object without any parameters> >student s;> >return> 0;> }>

>

>

Ausgabe

(no output)>

Wie wir sehen, können wir das Objekt der Klasse student ohne Übergabe eines Arguments erstellen, selbst wenn wir keinen expliziten Standardkonstruktor dafür definiert haben.

2. Parametrisierter Konstruktor in C++

Parametrisierte Konstruktoren ermöglichen die Übergabe von Argumenten an Konstruktoren. Normalerweise helfen diese Argumente bei der Initialisierung eines Objekts, wenn es erstellt wird. Um einen parametrisierten Konstruktor zu erstellen, fügen Sie ihm einfach Parameter hinzu, wie Sie es bei jeder anderen Funktion tun würden. Wenn Sie den Körper des Konstruktors definieren, verwenden Sie die Parameter, um das Objekt zu initialisieren.

Syntax des parametrisierten Konstruktors

className (parameters...) {     // body  }>

Beispiele für parametrisierte Konstruktoren

Die folgenden Beispiele veranschaulichen die Verwendung der parametrisierten Konstruktoren in C++.

Beispiel 1: Definieren eines parametrisierten Konstruktors innerhalb der Klasse.

CPP




// CPP program to illustrate parameterized constructors> #include> using> namespace> std;> class> Point {> private>:> >int> x, y;> public>:> >// Parameterized Constructor> >Point(>int> x1,>int> y1)> >{> >x = x1;> >y = y1;> >}> >int> getX() {>return> x; }> >int> getY() {>return> y; }> };> int> main()> {> >// Constructor called> >Point p1(10, 15);> >// Access values assigned by constructor> >cout <<>'p1.x = '> << p1.getX()> ><<>', p1.y = '> << p1.getY();> >return> 0;> }>

>

>

Ausgabe

p1.x = 10, p1.y = 15>

Beispiel 2: Definieren eines parametrisierten Konstruktors außerhalb der Klasse.

C++




// C++ Program to illustrate how to define the parameterized> // constructor outside the class> #include> #include> using> namespace> std;> // class definition> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >student(>int>,>char>[],>double>);> >void> display();> };> // parameterized constructor outside class> student::student(>int> no,>char> n[],>double> f)> {> >rno = no;> >strcpy>(name, n);> >fee = f;> }> void> student::display()> {> >cout << endl << rno <<>' '> << name <<>' '> << fee;> }> // driver code> int> main()> {> >student s(1001,>'Ram'>, 10000);> >s.display();> >return> 0;> }>

>

>

Ausgabe

1001 Ram 10000>

Wenn ein Objekt in einem parametrisierten Konstruktor deklariert wird, müssen die Anfangswerte als Argumente an die Konstruktorfunktion übergeben werden. Die normale Art der Objektdeklaration funktioniert möglicherweise nicht. Die parametrisierten Konstruktoren können explizit oder implizit aufgerufen werden:

Example e = Example(0, 50);   // Explicit call  Example e(0, 50);    // Implicit call>

Wenn der parametrisierte Konstruktor definiert ist und kein Standardkonstruktor explizit definiert ist, erstellt der Compiler nicht implizit den Standardkonstruktor und erstellt daher ein einfaches Objekt wie folgt:

Student s;>

wird ein Fehler blinken.

MySQL-Listenbenutzer

Beispiel 3:

C++




// C++ Program to illustrate the error caused be not> // defining the explicit defualt constructor after> // parameterized constructor> #include> #include> using> namespace> std;> // class definition> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >student(>int> no,>char> n[],>double> f)> >{> >rno = no;> >strcpy>(name, n);> >fee = f;> >}> };> // driver code> int> main()> {> >student s;>// this will cause error> >return> 0;> }>

>

>

Ausgabe

main.cpp: In function ‘int main()’: main.cpp:25:13: error: no matching function for call to ‘student::student()’  25 | student s; // this will cause error  | ^ main.cpp:14:5: note: candidate: ‘student::student(int, char*, double)’  14 | student(int no, char n[], double f)  | ^~~~~~~ main.cpp:14:5: note: candidate expects 3 arguments, 0 provided main.cpp:8:7: note: candidate: ‘constexpr student::student(const student&)’  8 | class student {  | ^~~~~~~ main.cpp:8:7: note: candidate expects 1 argument, 0 provided main.cpp:8:7: note: candidate: ‘constexpr student::student(student&&)’ main.cpp:8:7: note: candidate expects 1 argument, 0 provided ^~>

Wichtiger Hinweis: Immer wenn wir einen oder mehrere nicht standardmäßige Konstruktoren (mit Parametern) für eine Klasse definieren, sollte auch explizit ein Standardkonstruktor (ohne Parameter) definiert werden, da der Compiler in diesem Fall keinen Standardkonstruktor bereitstellt. Es ist zwar nicht notwendig, wird aber als beste Vorgehensweise angesehen, immer einen Standardkonstruktor zu definieren.

Verwendung des parametrisierten Konstruktors

  • Es wird verwendet, um die verschiedenen Datenelemente verschiedener Objekte bei ihrer Erstellung mit unterschiedlichen Werten zu initialisieren.
  • Es wird verwendet, um Konstruktoren zu überladen.

Standardargumente mit C++-parametrisiertem Konstruktor

Genau wie normale Funktionen können wir auch Standardwerte für die Argumente parametrisierter Konstruktoren definieren. Alle Regeln der Standardargumente wird auf diese Parameter angewendet.

Beispiel 3: Definieren eines parametrisierten Konstruktors mit Standardwerten

C++




// C++ Program to illustrate how to use default arguments> // with parameterized constructor> #include> using> namespace> std;> // class> class> GFG {> private>:> >int> data;> public>:> >// parameterized constructor with default values> >GFG(>int> x = 0) { data = x; }> >int> getData() {>return> data; }> };> int> main()> {> >GFG obj1;>// will not throw error> >GFG obj2(25);> >cout <<>'First Object Data: '> << obj1.getData() << endl;> >cout <<>'Second Object Data: '> << obj2.getData()> ><< endl;> >return> 0;> }>

>

>

Ausgabe

First Object Data: 0 Second Object Data: 25>

Wie wir sehen können, ist es zulässig, das Objekt zu erstellen, ohne Parameter zu übergeben, wenn jedem Argument des parametrisierten Konstruktors die Standardwerte zugewiesen werden, genau wie bei Standardkonstruktoren. Dieser Konstruktortyp funktioniert also sowohl als Standardkonstruktor als auch als parametrisierter Konstruktor.

3. Kopieren Sie den Konstruktor in C++

Ein Kopierkonstruktor ist eine Memberfunktion, die ein Objekt mithilfe eines anderen Objekts derselben Klasse initialisiert.

Syntax von Konstruktor kopieren

Konstruktor kopieren akzeptiert einen Verweis auf ein Objekt derselben Klasse als Argument.

ClassName (ClassName &obj) {    // body_containing_logic  }>

Genau wie der Standardkonstruktor stellt der C++-Compiler auch einen impliziten Kopierkonstruktor bereit, wenn die explizite Kopierkonstruktordefinition nicht vorhanden ist. Hierbei ist zu beachten, dass im Gegensatz zum Standardkonstruktor, bei dem das Vorhandensein eines expliziten Konstruktors jeglicher Art zur Löschung des impliziten Standardkonstruktors führt, der implizite Kopierkonstruktor immer vom Compiler erstellt wird, wenn kein expliziter Kopierkonstruktor vorhanden ist oder ein expliziter Verschiebungskonstruktor ist vorhanden.

Beispiele für den Kopierkonstruktor

Die folgenden Beispiele veranschaulichen die Verwendung der Kopierkonstruktoren in C++.

Beispiel 1: Illustration des impliziten Kopierkonstruktors

C++




// C++ program to illustrate the use of Implicit copy> // constructor> #include> using> namespace> std;> class> Sample {> >int> id;> public>:> >// parameterized constructor> >Sample(>int> x) { id = x; }> >void> display() { cout <<>'ID='> << id; }> };> int> main()> {> >Sample obj1(10);> >obj1.display();> >cout << endl;> >// creating an object of type Sample from the obj> >Sample obj2(obj1);>// or obj2=obj1;> >obj2.display();> >return> 0;> }>

>

>

Ausgabe

ID=10 ID=10>

Beispiel 2: Definieren eines expliziten Kopierkonstruktors

C++




// C++ Program to demonstrate how to define the explicit> // copy constructor> #include> using> namespace> std;> class> Sample {> >int> id;> public>:> >// default constructor with empty body> >Sample() {}> >// parameterized constructor> >Sample(>int> x) { id = x; }> >// copy constructor> >Sample(Sample& t) { id = t.id; }> >void> display() { cout <<>'ID='> << id; }> };> // driver code> int> main()> {> >Sample obj1(10);> >obj1.display();> >cout << endl;> >// copy constructor called> >Sample obj2(obj1);>// or obj2=obj1;> >obj2.display();> >return> 0;> }>

>

>

Ausgabe

ID=10 ID=10>

Beispiel 3: Definieren eines expliziten Kopierkonstruktors mit parametrisiertem Konstruktor

C++




// C++ program to demonstrate copy construction along with> // parameterized constructor> #include> #include> using> namespace> std;> // class definition> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >student(>int>,>char>[],>double>);> >student(student& t)>// copy constructor> >{> >rno = t.rno;> >strcpy>(name, t.name);> >fee = t.fee;> >}> >void> display();> };> student::student(>int> no,>char> n[],>double> f)> {> >rno = no;> >strcpy>(name, n);> >fee = f;> }> void> student::display()> {> >cout << endl << rno <<>' '> << name <<>' '> << fee;> }> int> main()> {> >student s(1001,>'Manjeet'>, 10000);> >s.display();> >student manjeet(s);>// copy constructor called> >manjeet.display();> >return> 0;> }>

Java-Karten

>

>

Ausgabe

1001 Manjeet 10000 1001 Manjeet 10000>

Verwendung des Copy Constructor

  • Konstruiert ein neues Objekt durch Kopieren von Werten aus einem vorhandenen Objekt.
  • Kann zum Durchführen von Deep Copy verwendet werden.
  • Ändern Sie bei Bedarf bestimmte Attribute während des Kopiervorgangs.

4. Verschieben Sie den Konstruktor in C++

Der Move-Konstruktor ist eine neue Ergänzung der Konstruktorfamilie in C++. Es ist wie ein Kopierkonstruktor, der das Objekt aus den bereits vorhandenen Objekten erstellt. Anstatt das Objekt jedoch in den neuen Speicher zu kopieren, nutzt er die Verschiebungssemantik, um den Besitz des bereits erstellten Objekts auf das neue Objekt zu übertragen, ohne zusätzliche Objekte zu erstellen Kopien.

Es kann als Diebstahl der Ressourcen von anderen Objekten angesehen werden.

Syntax des Move-Konstruktors in C++

className (className&& obj) {    // body of the constructor  }>

Der Move-Konstruktor nimmt die R-Wert-Referenz des Objekts derselben Klasse und überträgt den Besitz dieses Objekts auf das neu erstellte Objekt.

Wie ein Kopierkonstruktor erstellt der Compiler einen Verschiebungskonstruktor für jede Klasse, die keinen expliziten Verschiebungskonstruktor hat.

Beispiele für den Move-Konstruktor

Die folgenden Beispiele veranschaulichen die Verwendung der Verschiebungskonstruktoren in C++.

Beispiel 1: Definieren des Move-Konstruktors

C++




// C++ Program to illustrate how to define a move> // constructor> #include> using> namespace> std;> class> Box {> public>:> >int>* data;>// Pointer to an integer value> >// Constructor> >Box(>int> value)> >{> >data =>new> int>;> >*data = value;> >}> >// Move constructor> >Box(Box&& other) noexcept> >{> >cout <<>'Move Constructor Called'> << endl;> >data = other.data;>// Transfer ownership of 'other'> >// data> >other.data = nullptr;>// Null out 'other' to prevent> >// double deletion> >}> >// Destructor> >~Box() {>delete> data; }> };> int> main()> {> >// Create a Box with value 42> >Box originalBox(42);> >// Create a new Box by moving resources from the> >// originalBox> >Box newBox(move(originalBox));> >cout <<>'newBox.data: '> << *newBox.data;> >// originalBox is now in a valid but unspecified> >// state (its resources were moved to newBox)> >return> 0;> }>

>

>

Ausgabe

Move Constructor Called newBox.data: 42>

Verwendungsmöglichkeiten des Move Constructor

  • Anstatt Kopien zu erstellen, übertragen Umzugskonstrukteure effizient den Besitz dieser Ressourcen.
  • Dies verhindert unnötiges Kopieren des Speichers und reduziert den Overhead.
  • Sie können Ihren eigenen Verschiebungskonstruktor definieren, um bestimmte Ressourcenübertragungen abzuwickeln.

Destruktoren in C++

Ein Destruktor ist auch als Konstruktor eine spezielle Memberfunktion. Der Destruktor zerstört die vom Konstruktor erstellten Klassenobjekte. Der Destruktor hat den gleichen Namen wie sein Klassenname, dem ein Tilde-Symbol (~) vorangestellt ist. Es ist nicht möglich, mehr als einen Destruktor zu definieren. Der Destruktor ist nur eine Möglichkeit, das vom Konstruktor erstellte Objekt zu zerstören. Daher kann der Destruktor nicht überlastet werden. Der Destruktor erfordert weder ein Argument noch gibt er einen Wert zurück. Es wird automatisch aufgerufen, wenn das Objekt den Gültigkeitsbereich verlässt. Destruktoren geben Speicherplatz frei, der von den vom Konstruktor erstellten Objekten belegt wird. In Zerstörer , werden Objekte in umgekehrter Reihenfolge wie die Objekterstellung zerstört.

Syntax von Destruktoren in C++

Wie Konstruktoren können auch Destruktoren entweder innerhalb oder außerhalb der Klasse definiert werden.

Die Syntax zum Definieren des Destruktors innerhalb der Klasse

~ (){}>

Die Syntax zum Definieren des Destruktors außerhalb der Klasse

: : ~(){}>

Beispiele für Destruktoren in C++

Die folgenden Beispiele veranschaulichen die Verwendung der Destruktoren in C++.

Beispiel 1: Definieren eines einfachen Destruktors

C++




#include> using> namespace> std;> class> Test {> public>:> >Test() { cout <<>' Constructor executed'>; }> >~Test() { cout <<>' Destructor executed'>; }> };> main()> {> >Test t;> >return> 0;> }>

>

>

Ausgabe

 Constructor executed Destructor executed>

Beispiel 2: Zählen, wie oft ein Objekt erstellt und zerstört wird

C++




Normalisierung in der Datenbank
// C++ Program to count the number of objects created and> // destroyed> #include> using> namespace> std;> // global variable to count> int> count = 0;> // class definition> class> Test {> public>:> >Test()> >{> >count++;> >cout <<>'No. of Object created: '> << count << endl;> >}> >~Test()> >{> >cout <<>'No. of Object destroyed: '> << count> ><< endl;> >--count;> >}> };> // driver code> int> main()> {> >Test t, t1, t2, t3;> >return> 0;> }>

>

>

Ausgabe

No. of Object created: 1 No. of Object created: 2 No. of Object created: 3 No. of Object created: 4 No. of Object destroyed: 4 No. of Object destroyed: 3 No. of Object destroyed: 2 No. of Object destroyed: 1>

Eigenschaften von Destruktoren in C++

Im Folgenden sind einige Hauptmerkmale von Destruktoren in C++ aufgeführt:

  • Der Destruktor wird vom Compiler automatisch aufgerufen, wenn der entsprechende Konstruktor den Gültigkeitsbereich verlässt und den vom Programm nicht mehr benötigten Speicherplatz freigibt.
  • Der Destruktor erfordert weder ein Argument noch gibt er einen Wert zurück und kann daher nicht überladen werden.
  • Destruktor kann nicht als static und const deklariert werden;
  • Der Destruktor sollte im öffentlichen Abschnitt des Programms deklariert werden.
  • Der Destruktor wird in der umgekehrten Reihenfolge seines Konstruktoraufrufs aufgerufen.

Häufig gestellte Fragen zu C++-Konstruktoren

Welche Funktionen werden vom Compiler standardmäßig generiert, wenn wir sie nicht explizit bereitstellen?

Die Funktionen, die vom Compiler standardmäßig generiert werden, wenn wir sie nicht explizit bereitstellen, sind:

  1. Standardkonstruktor
  2. Konstruktor kopieren
  3. Konstrukteure verschieben
  4. Aufgabenverwalter
  5. Zerstörer

Können wir die Konstrukteure privat machen?

Ja, in C++ können Konstruktoren privat gemacht werden. Das bedeutet, dass kein externer Code ein Objekt dieser Klasse direkt erstellen kann.

Wie unterscheiden sich Konstruktoren von einer normalen Mitgliedsfunktion?

Ein Konstruktor unterscheidet sich in folgenden Punkten von normalen Funktionen:

  • Der Konstruktor hat denselben Namen wie die Klasse selbst
  • Standardkonstruktoren haben kein Eingabeargument, Kopierkonstruktoren und parametrisierte Konstruktoren haben jedoch Eingabeargumente
  • Konstruktoren haben keinen Rückgabetyp
  • Ein Konstruktor wird automatisch aufgerufen, wenn ein Objekt erstellt wird.
  • Es muss im öffentlichen Bereich des Unterrichts platziert werden.
  • Wenn wir keinen Konstruktor angeben, generiert der C++-Compiler einen Standardkonstruktor für das Objekt (erwartet keine Parameter und hat einen leeren Körper).

Können wir mehr als einen Konstruktor in einer Klasse haben?

Ja, wir können mehr als einen Konstruktor in einer Klasse haben. Es wird genannt Konstruktorüberladung .

In Verbindung stehende Artikel:

  • Destruktoren in C++
  • Quiz zu Konstruktoren in C++
  • Ausgabe von C++-Programmen | Set 26 (Konstrukteure)
  • Ausgabe von C++-Programmen | Set 27 (Konstruktoren und Destruktoren)