Konstruktor brez kakršnih koli argumentov ali s privzeto vrednostjo za vsak argument se imenuje the Privzeti konstruktor .
Konstruktor, ki ima ničelni seznam parametrov ali v drugem smislu, konstruktor, ki ne sprejema argumentov, se imenuje konstruktor ničelnih argumentov ali privzeti konstruktor.
Če programer v izvorni kodi ni definiral privzetega konstruktorja, je prevajalnik implicitno definiral privzeti konstruktor med prevajanjem.
Če je privzeti konstruktor eksplicitno definiran v programu s strani programerja, potem prevajalnik ne bo definiral konstruktorja implicitno, ampak ga kliče implicitno.
Kakšen je pomen privzetega konstruktorja?
industrijo in tovarno
Uporabljajo se za ustvarjanje objektov, ki nimajo določene začetne vrednosti.
Ali je privzeti konstruktor na voljo samodejno?
Če v razredu ni izrecno deklariran noben konstruktor, prevajalnik samodejno zagotovi privzeti konstruktor.
Ali lahko privzeti konstruktor vsebuje privzeti argument?
Da, konstruktor lahko vsebuje privzeti argument s privzetimi vrednostmi za predmet.
Ali bo prevajalnik v zakulisju v uporabniško implementiran privzeti konstruktor vstavil kakšno kodo?
Prevajalnik bo implicitno deklariral privzeti konstruktor, če ga programer ne zagotovi, ga bo definiral, ko bo potreben. Privzeti konstruktor, ki ga definira prevajalnik, je potreben za določeno inicializacijo notranjih elementov razreda. Ne bo se dotaknil podatkovnih članov ali običajnih starih podatkovnih tipov (agregatov, kot je niz, strukture itd.). Vendar pa prevajalnik ustvari kodo za privzeti konstruktor glede na situacijo.
Razmislite o razredu, ki je izpeljan iz drugega razreda s privzetim konstruktorjem, ali o razredu, ki vsebuje drug predmet razreda s privzetim konstruktorjem. Prevajalnik mora vstaviti kodo za klic privzetih konstruktorjev osnovnega razreda/vdelanega predmeta.
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;> }> |
>
>Izhod
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>>ime;> >cout<<>'Enter the Fee:'>;> >cin>>pristojbina;> >}> > >void> display()> >{> >cout<' '<' '< } }; int main() { student s; s.display(); return 0; }> |
>
kontradiktorno iskanje
>
Obstajajo različni scenariji, v katerih mora prevajalnik vstaviti kodo, da zagotovi potrebno inicializacijo glede na jezikovne zahteve. Objavili jih bomo v naslednjih objavah. Naš cilj je, da se zavedamo notranjosti C++, da jih ne uporabljamo nepravilno.
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;> }> |
>
>Izhod
Sum =30 Sum =5>
Pojasnilo: Tukaj imamo konstruktor z dvema parametroma - enostavnim parametrom in enim privzetim parametrom. Zdaj obstajata dva načina za klic tega konstruktorja:
- Prvič, obema argumentoma lahko dodelimo vrednosti in te vrednosti bodo posredovane konstruktorju, privzeti argument x z vrednostjo 0 pa bo preglasil vrednost, posredovana med klicem (v tem primeru 20). Zato bo koda dala rezultat 30 (kot je vsota= a+x, tj. 10+20= 30).
- Drugi način je, da ne posredujete nobene vrednosti za privzeti parameter. Če to storite, bo x vzel svojo privzeto vrednost 0 kot končno vrednost in izračunal vsoto 5 (kot je vsota = a+x, tj. 5+0=5).