Een constructor zonder argumenten of met de standaardwaarde voor elk argument wordt de Standaardconstructor .
Een constructor die een nulparameterlijst heeft of, in andere zin, een constructor die geen argumenten accepteert, wordt een nulargumentconstructor of standaardconstructor genoemd.
Als de standaardconstructor niet door de programmeur in de broncode is gedefinieerd, heeft de compiler de standaardconstructor impliciet gedefinieerd tijdens het compileren.
Als de standaardconstructor expliciet in het programma wordt gedefinieerd door de programmeur, zal de compiler de constructor niet impliciet definiëren, maar roept hij de constructor impliciet aan.
Wat is de betekenis van de standaardconstructor?
np.som
Ze worden gebruikt om objecten te creëren die geen specifieke initiële waarde hebben.
Wordt er automatisch een standaardconstructor opgegeven?
Als er geen expliciete constructors in de klasse worden gedeclareerd, wordt er automatisch door de compiler een standaardconstructor geleverd.
Kan een standaardconstructor een standaardargument bevatten?
Ja, een constructor kan een standaardargument bevatten met standaardwaarden voor een object.
Zal er achter de schermen code door de compiler worden ingevoegd in de door de gebruiker geïmplementeerde standaardconstructor?
De compiler zal impliciet de standaardconstructor declareren als deze niet door de programmeur wordt verstrekt, en deze definiëren wanneer dat nodig is. De door de compiler gedefinieerde standaardconstructor is vereist om bepaalde initialisatie van klasse-internals uit te voeren. Het zal de gegevensleden of gewone oude gegevenstypen (aggregaten zoals een array, structuren, enz.) niet aanraken. De compiler genereert echter code voor de standaardconstructor op basis van de situatie.
Beschouw een klasse die is afgeleid van een andere klasse met de standaardconstructor, of een klasse die een ander klasseobject bevat met de standaardconstructor. De compiler moet code invoegen om de standaardconstructors van de basisklasse/het ingebedde object aan te roepen.
C++
// CPP program to demonstrate Default constructors> #include> using> namespace> std;> class> Base {> public> :> > // compiler 'declares' constructor> };> class> A {> public> :> > // User defined constructor> > A() { cout <<> 'A Constructor'> << endl; }> > // uninitialized> > int> size;> };> class> B :> public> A {> > // compiler defines default constructor of B, and> > // inserts stub to call A constructor> > // compiler won't initialize any data of A> };> class> C :> public> A {> public> :> > C()> > {> > // User defined default constructor of C> > // Compiler inserts stub to call A's constructor> > cout <<> 'C Constructor'> << endl;> > // compiler won't initialize any data of A> > }> };> class> D {> public> :> > D()> > {> > // User defined default constructor of D> > // a - constructor to be called, compiler inserts> > // stub to call A constructor> > cout <<> 'D Constructor'> << endl;> > // compiler won't initialize any data of 'a'> > }> private> :> > A a;> };> // Driver Code> int> main()> {> > Base base;> > B b;> > C c;> > D d;> > return> 0;> }> |
>
>Uitvoer
A Constructor A Constructor C Constructor A Constructor D Constructor>
C++
Example:> #include> using> namespace> std;> class> student> {> > int> rno;> > char> name[50];> > double> fee;> > public> :> > student()> // Explicit Default constructor> > {> > cout<<> 'Enter the RollNo:'> ;> > cin>>rno;> > cout<<> 'Enter the Name:'> ;> > cin>>naam;> > cout<<> 'Enter the Fee:'> ;> > cin>>vergoeding;> > }> > > void> display()> > {> > cout<' '<' '< } }; int main() { student s; s.display(); return 0; }> |
>
abstracte klasse
>
Er zijn verschillende scenario's waarin de compiler code moet invoegen om een noodzakelijke initialisatie te garanderen volgens de taalvereisten. We zullen ze in de komende berichten plaatsen. Ons doel is om op de hoogte te zijn van de interne functies van C++, en deze niet verkeerd te gebruiken.
C++
// CPP code to demonstrate constructor can have default> // arguments> #include> using> namespace> std;> class> A {> public> :> > int> sum = 0;> > A();> // default constructor with no argument> > A(> int> a,> int> x = 0)> // default constructor with one> > // default argument> > {> > sum = a + x;> > }> > void> print() { cout <<> 'Sum ='> << sum << endl; }> };> int> main()> {> > // This construct has two arguments. Second argument is> > // initialized with a value of 0 Now we can call the> > // constructor in two possible ways.> > A obj1(10, 20);> > A obj2(5);> > obj1.print();> > obj2.print();> > return> 0;> }> |
>
>Uitvoer
Sum =30 Sum =5>
Uitleg : Hier hebben we een constructor met twee parameters: eenvoudige parameters en één standaardparameter. Er zijn nu twee manieren om deze constructor aan te roepen:
- Ten eerste kunnen we waarden toewijzen aan beide argumenten en deze waarden worden doorgegeven aan de constructor en het standaardargument x met waarde 0 wordt overschreven door de waarde die wordt doorgegeven tijdens het aanroepen (in dit geval 20). De code geeft dus een uitvoer van 30 (als som= a+x, d.w.z. 10+20= 30).
- De tweede manier is om geen waarde door te geven voor de standaardparameter. Als u dit doet, neemt x de standaardwaarde 0 als eindwaarde en berekent een som van 5 (als som = a+x, d.w.z. 5+0=5).