Constructor is een speciale lidfunctie van een klasse die het object van de klasse initialiseert. De constructornaam is hetzelfde als de klassennaam en heeft geen retourtype. Laten we een eenvoudig voorbeeld nemen om de werking van de constructor te begrijpen.
Eenvoudig voorbeeld: hoe constructor te gebruiken in C ++
Lees de opmerkingen in het volgende programma om elk onderdeel van het programma te begrijpen.
# include <iostream> namespace std; gebruiken; class constructorDemo { openbaar:int num;char ch;/ * Dit is een standaardconstructor van de * klasse, houd er rekening mee dat de naam hetzelfde is als * klassenaam en deze heeft geen retourtype. * /constructorDemo () { aantal = 100; ch = 'A';} }; int main () {/ * Dit is hoe we het object van klasse creëren, * Ik heb de objectnaam als obj gegeven, dat kan * geef een willekeurige naam, onthoud gewoon de syntaxis: * class_name object_name; * /constructor Demo obj;/ * Dit is hoe we toegang krijgen tot gegevensleden met behulp van een object * we controleren alleen maar de waarde die we hebben * Geïnitialiseerd in constructor reflecteert of niet. * /cout << "num:" << obj.num << endl;cout << "ch:" << obj.ch;terugkeer 0; }
Output:
aantal: 100 ch: A
Constructor versus lidfunctie
Nu we weten wat constructor is, laten we bespreken hoe een constructor verschilt van de lidfunctie van de klasse.
1) Constructor heeft geen retourtype. De ledenfunctie heeft een retourtype.
2) Constructor wordt automatisch aangeroepen wanneer we het object van de klasse maken. De functie Member moet expliciet worden opgeroepen met behulp van object of class.
3) Wanneer we geen constructor in onze klasse maken, genereert de C ++ compiler een standaardconstructor en wordt deze in onze code ingevoegd. Hetzelfde geldt niet voor ledenfuncties.
Dit is hoe een door de compiler gegenereerde standaardconstructor eruit ziet:
klasse XYZ { .... XYZ () { // Geen code leeg } };
Soorten constructor in C ++
Er zijn twee soorten constructor in C ++. 1) Standaardconstructor 2) Geconfigureerde constructor
1) Standaardconstructeur
Een standaardconstructor heeft geen argumenten (of parameters)
# include <iostream> namespace std; gebruiken; klasse Website { openbaar:// StandaardconstructorWebsite () { cout << "Welkom bij BeginnersBook" << endl;} }; int main (void) {/ * twee objecten van klasse Website maken. * Dit betekent dat de standaardconstructor * had tweemaal moeten worden ingeroepen. * /Website obj1;Website obj2;terugkeer 0; }
Output:
Welkom bij BeginnersBook Welkom bij BeginnersBook
Als u geen constructor in de klasse opgeeft, wordt een standaardconstructor zonder code (lege inhoud) door uw compiler in uw code ingevoegd.
2) Geconfigureerde constructor
Constructors met parameters staan bekend als Parameterized constructors. Met dit type constructor kunnen we argumenten doorgeven tijdens het maken van objecten. Laten we eens kijken hoe ze eruit zien:
Laten we zeggen dat de klassennaam XYZ is
Standaard constructor:
XYZ () { } .... XYZ obj; ....
Geparametriseerde constructor:
XYZ (int a, int b) { } ... XYZ obj (10, 20);
Voorbeeld:
# include <iostream> namespace std; gebruiken; class Toevoegen { openbaar:// Geparametriseerde constructorToevoegen (int num1, int num2) { cout << (num1 + num2) << endl;} }; int main (void) {/ * Eén manier om een object te maken. Ook * bekend als impliciete oproep aan de * constructeur * /Voeg obj1 (10, 20) toe;/ * Een andere manier om een object te maken. Deze * staat bekend als expliciet aanroepen van de * constructeur. * /Toevoegen obj2 = Toevoegen (50, 60);terugkeer 0; }
Output:
30 110
ik denk dat COPY CONSTRUCTOR ook moet worden toegevoegd aan dit constructror-onderwerp