En konstruktør uten noen argumenter eller med standardverdien for hvert argument sies å være Standard konstruktør .
En konstruktør som har null parameterliste eller i annen forstand, en konstruktør som ikke aksepterer argumenter, kalles en null argument konstruktør eller standard konstruktør.
Hvis standardkonstruktøren ikke er definert i kildekoden av programmereren, definerte kompilatoren standardkonstruktøren implisitt under kompilering.
Hvis standardkonstruktøren er definert eksplisitt i programmet av programmereren, vil ikke kompilatoren definere konstruktøren implisitt, men kaller konstruktøren implisitt.
Hva er betydningen av standardkonstruktøren?
skjulte apper
De brukes til å lage objekter, som ikke har noen spesifikk startverdi.
Leveres det automatisk en standardkonstruktør?
Hvis ingen konstruktører er eksplisitt deklarert i klassen, leveres en standardkonstruktør automatisk av kompilatoren.
Kan en standardkonstruktør inneholde et standardargument?
Ja, en konstruktør kan inneholde standardargument med standardverdier for et objekt.
Vil det være noen kode satt inn av kompilatoren til den brukerimplementerte standardkonstruktøren bak kulissene?
Kompilatoren vil implisitt deklarere standardkonstruktøren hvis den ikke er levert av programmereren, vil definere den når den er i behov. Den kompilatordefinerte standardkonstruktøren kreves for å utføre visse initialiseringer av klassens interne elementer. Den vil ikke berøre datamedlemmene eller vanlige gamle datatyper (aggregater som en matrise, strukturer, etc ...). Imidlertid genererer kompilatoren kode for standardkonstruktøren basert på situasjonen.
Tenk på en klasse avledet fra en annen klasse med standardkonstruktøren, eller en klasse som inneholder et annet klasseobjekt med standardkonstruktøren. Kompilatoren må sette inn kode for å kalle standardkonstruktørene til basisklassen/det innebygde objektet.
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;> }> |
>
>Produksjon
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>>avgift;> > }> > > void> display()> > {> > cout<' '<' '< } }; int main() { student s; s.display(); return 0; }> |
>
hvordan laste ned musikk
>
Det er forskjellige scenarier der kompilatoren må sette inn kode for å sikre nødvendig initialisering i henhold til språkkrav. Vi vil ha dem i kommende innlegg. Vårt mål er å være oppmerksom på C++-innbygg, ikke å bruke dem feil.
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;> }> |
>
>Produksjon
Sum =30 Sum =5>
Forklaring: Her har vi en konstruktør med to parameter - enkel parameter og en standard parameter. Nå er det to måter å kalle denne konstruktøren:
- Først kan vi tilordne verdier til begge argumentene, og disse verdiene vil bli sendt til konstruktøren og standardargumentet x med verdi 0 vil bli overstyrt av verdien som sendes under anrop (i dette tilfellet 20). Derfor vil koden gi en utgang på 30 (som, sum= a+x dvs. 10+20= 30).
- Den andre måten er å ikke sende noen verdi for standardparameteren. Hvis du gjør det, vil x ta standardverdien 0 som den endelige verdien og beregne en sum av 5 (som, sum = a+x, dvs. 5+0=5).