Konstruktors bez argumentiem vai ar noklusējuma vērtību katram argumentam tiek uzskatīts par Noklusējuma konstruktors .
Konstruktoru, kuram ir nulles parametru saraksts, vai citā nozīmē konstruktoru, kas nepieņem argumentus, sauc par nulles argumentu konstruktoru vai noklusējuma konstruktoru.
Ja programmētājs avota kodā nav definējis noklusējuma konstruktoru, kompilators kompilācijas laikā netieši definēja noklusējuma konstruktoru.
Ja programmētājs programmā ir skaidri definējis noklusējuma konstruktoru, kompilators konstruktoru nedefinēs netieši, bet gan netieši izsauc konstruktoru.
Kāda ir noklusējuma konstruktora nozīme?
git statuss -s
Tos izmanto, lai izveidotu objektus, kuriem nav noteiktas sākotnējās vērtības.
Vai noklusējuma konstruktors tiek nodrošināts automātiski?
Ja klasē nav skaidri norādīts neviens konstruktors, kompilators automātiski nodrošina noklusējuma konstruktoru.
Vai noklusējuma konstruktors var saturēt noklusējuma argumentu?
Jā, konstruktors var saturēt noklusējuma argumentu ar objekta noklusējuma vērtībām.
Vai aizkulisēs būs kāds kods, ko kompilators ievietos lietotāja ieviestajam noklusējuma konstruktoram?
Kompilators netieši paziņos noklusējuma konstruktoru, ja programmētājs to nenodrošina, un definēs to, kad tas būs nepieciešams. Kompilatora definētais noklusējuma konstruktors ir nepieciešams, lai veiktu noteiktu klases iekšējo elementu inicializāciju. Tas neskars datu elementus vai vienkāršus vecos datu tipus (apkopojumus, piemēram, masīvu, struktūras utt.). Tomēr kompilators ģenerē kodu noklusējuma konstruktoram, pamatojoties uz situāciju.
Apsveriet klasi, kas iegūta no citas klases ar noklusējuma konstruktoru, vai klasi, kas satur citu klases objektu ar noklusējuma konstruktoru. Kompilatoram ir jāievieto kods, lai izsauktu bāzes klases/iegultā objekta noklusējuma konstruktorus.
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;> }> |
>
>Izvade
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>>nosaukums;> > cout<<> 'Enter the Fee:'> ;> > cin>>maksa;> > }> > > void> display()> > {> > cout<' '<' '< } }; int main() { student s; s.display(); return 0; }> |
>
0,04 kā daļu
>
Ir dažādi scenāriji, kuros kompilatoram ir jāievieto kods, lai nodrošinātu nepieciešamo inicializāciju atbilstoši valodas prasībām. Mums tie būs nākamajos ierakstos. Mūsu mērķis ir apzināties C++ iekšējos elementus, nevis tos izmantot nepareizi.
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;> }> |
>
>Izvade
Sum =30 Sum =5>
Paskaidrojums: Šeit mums ir konstruktors ar diviem parametriem - vienkāršu parametru un vienu noklusējuma parametru. Tagad ir divi veidi, kā izsaukt šo konstruktoru:
- Pirmkārt, mēs varam piešķirt vērtības abiem argumentiem, un šīs vērtības tiks nodotas konstruktoram, un noklusējuma arguments x ar vērtību 0 tiks ignorēts ar vērtību, kas tika nodota izsaukšanas laikā (šajā gadījumā — 20). Tādējādi kods dos izvadi 30 (as, summa = a+x, ti, 10+20 = 30).
- Otrs veids ir nenodot nekādu noklusējuma parametra vērtību. Ja to darīsit, x kā galīgo vērtību izmantos noklusējuma vērtību 0 un aprēķinās summu 5 (kā, summa = a+x, t.i., 5+0=5).