Konstruktorius be jokių argumentų arba su numatytąją kiekvieno argumento reikšmę yra vadinamas Numatytasis konstruktorius .
Konstruktorius, turintis nulinį parametrų sąrašą, arba kita prasme konstruktorius, kuris nepriima jokių argumentų, vadinamas nuliniu argumentų konstruktoriumi arba numatytuoju konstruktoriumi.
Jei programuotojas neapibrėžė numatytojo konstruktoriaus šaltinio kode, tada kompiliatorius netiesiogiai apibrėžė numatytąjį konstruktorių kompiliavimo metu.
Jei numatytąjį konstruktorių programuotojas aiškiai apibrėžia programoje, kompiliatorius netiesiogiai apibrėžs konstruktorių, o netiesiogiai iškviečia konstruktorių.
Kokia yra numatytojo konstruktoriaus reikšmė?
prižiūrimas mašininis mokymasis
Jie naudojami kuriant objektus, kurie neturi konkrečios pradinės vertės.
Ar numatytasis konstruktorius pateikiamas automatiškai?
Jei klasėje nėra aiškiai deklaruotų konstruktorių, kompiliatorius automatiškai pateikia numatytąjį konstruktorių.
Ar numatytasis konstruktorius gali turėti numatytąjį argumentą?
Taip, konstruktoriuje gali būti numatytasis argumentas su numatytosiomis objekto reikšmėmis.
Ar užkulisiuose bus koks nors kodas, kurį kompiliatorius įterps į vartotojo įdiegtą numatytąjį konstruktorių?
Kompiliatorius netiesiogiai deklaruos numatytąjį konstruktorių, jei jo nepateiks programuotojas, ir nustatys jį, kai to prireiks. Kompiliatoriaus apibrėžtas numatytasis konstruktorius reikalingas tam tikram klasės vidinių elementų inicijavimui. Tai nepalies duomenų narių ar paprastų senų duomenų tipų (agregatų, pvz., masyvo, struktūrų ir kt.). Tačiau kompiliatorius, atsižvelgdamas į situaciją, sugeneruoja numatytojo konstruktoriaus kodą.
Apsvarstykite klasę, gautą iš kitos klasės su numatytuoju konstruktoriumi, arba klasę, kurioje yra kitas klasės objektas su numatytuoju konstruktoriumi. Kompiliatorius turi įterpti kodą, kad iškviestų numatytuosius pagrindinės klasės / įterptojo objekto konstruktorius.
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;> }> |
>
>Išvestis
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>>vardas;> > cout<<> 'Enter the Fee:'> ;> > cin>>mokestis;> > }> > > void> display()> > {> > cout<' '<' '< } }; int main() { student s; s.display(); return 0; }> |
>
kas yra android velykinis kiaušinis
>
Yra įvairių scenarijų, kai kompiliatorius turi įterpti kodą, kad užtikrintų tam tikrą būtiną inicijavimą pagal kalbos reikalavimus. Mes juos pateiksime būsimuose įrašuose. Mūsų tikslas yra žinoti C++ vidinius elementus, o ne naudoti juos neteisingai.
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;> }> |
>
>Išvestis
Sum =30 Sum =5>
Paaiškinimas: Čia mes turime konstruktorių su dviem parametrais - paprastu parametru ir vienu numatytuoju parametru. Dabar yra du būdai, kaip iškviesti šį konstruktorių:
- Pirma, mes galime priskirti vertes abiem argumentams ir šios reikšmės bus perduotos konstruktoriui, o numatytasis argumentas x, kurio reikšmė 0, bus nepaisoma verte, perduodama skambinant (šiuo atveju 20). Taigi kodas duos 30 išvestį (as, suma= a+x, ty 10+20= 30).
- Antrasis būdas yra neperduoti jokios numatytojo parametro reikšmės. Jei tai padarysite, x numatytąją reikšmę 0 laikys galutine verte ir apskaičiuos sumą 5 (as, suma = a+x, ty 5+0=5).