En konstruktør uden argumenter eller med standardværdien for hvert argument siges at være Standard konstruktør .
En konstruktør, der har nul parameterliste eller i anden betydning, en konstruktør, der ikke accepterer argumenter, kaldes en nul argument konstruktør eller standard konstruktør.
Hvis standardkonstruktøren ikke er defineret i kildekoden af programmøren, definerede compileren standardkonstruktøren implicit under kompileringen.
Hvis standardkonstruktøren er defineret eksplicit i programmet af programmøren, vil compileren ikke definere konstruktøren implicit, men den kalder konstruktøren implicit.
Hvad er betydningen af standardkonstruktøren?
skjulte apps
De bruges til at skabe objekter, som ikke har nogen specifik startværdi.
Leveres der automatisk en standardkonstruktør?
Hvis ingen konstruktører er eksplicit erklæret i klassen, leveres en standardkonstruktør automatisk af compileren.
Kan en standardkonstruktør indeholde et standardargument?
Ja, en konstruktør kan indeholde standardargument med standardværdier for et objekt.
Vil der være nogen kode indsat af compileren til den brugerimplementerede standardkonstruktør bag kulisserne?
Compileren vil implicit erklære standardkonstruktøren, hvis den ikke leveres af programmøren, vil definere den, når den er nødvendig. Den compiler-definerede standardkonstruktør er påkrævet for at udføre visse initialiseringer af klassens interne komponenter. Det vil ikke røre datamedlemmerne eller almindelige gamle datatyper (aggregater som et array, strukturer osv...). Imidlertid genererer compileren kode til standardkonstruktøren baseret på situationen.
Overvej en klasse, der er afledt af en anden klasse med standardkonstruktøren, eller en klasse, der indeholder et andet klasseobjekt med standardkonstruktøren. Compileren skal indsætte kode for at kalde standardkonstruktørerne for basisklassen/det indlejrede objekt.
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;> }> |
>
>Produktion
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>>navn;> >cout<<>'Enter the Fee:'>;> >cin>>gebyr;> >}> > >void> display()> >{> >cout<' '<' '< } }; int main() { student s; s.display(); return 0; }> |
>
hvordan man downloader musik
>
Der er forskellige scenarier, hvor compileren skal indsætte kode for at sikre en nødvendig initialisering i henhold til sprogkravene. Vi vil have dem i kommende opslag. Vores mål er at være opmærksomme på C++ internals, ikke at bruge dem forkert.
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;> }> |
>
>Produktion
Sum =30 Sum =5>
Forklaring: Her har vi en konstruktør med to parameter - simple parameter og en standard parameter. Nu er der to måder at kalde denne konstruktør på:
- For det første kan vi tildele værdier til både argumenterne, og disse værdier vil blive videregivet til konstruktøren, og standardargumentet x med værdien 0 vil blive tilsidesat af værdien, der sendes under opkald (i dette tilfælde 20). Derfor vil kode give et output på 30 (som, sum= a+x dvs. 10+20= 30).
- Den anden måde er ikke at sende nogen værdi for standardparameteren. Hvis du gør det, vil x tage dens standardværdi 0 som dens endelige værdi og beregne en sum på 5 (som, sum = a+x, dvs. 5+0=5).