logo

Costruttori predefiniti in C++

Un costruttore senza argomenti o con il valore predefinito per ogni argomento viene detto the Costruttore predefinito .

Un costruttore che ha un elenco di parametri pari a zero o, in un altro senso, un costruttore che non accetta argomenti è chiamato costruttore con argomenti zero o costruttore predefinito.



Se il costruttore predefinito non è definito nel codice sorgente dal programmatore, il compilatore ha definito implicitamente il costruttore predefinito durante la compilazione.

Se il costruttore predefinito viene definito esplicitamente nel programma dal programmatore, il compilatore non definirà implicitamente il costruttore, ma lo chiamerà implicitamente.

Qual è il significato del costruttore predefinito?



come scaricare video da youtube vlc

Vengono utilizzati per creare oggetti che non hanno alcun valore iniziale specifico.

Viene fornito automaticamente un costruttore predefinito?

Se nella classe non viene dichiarato esplicitamente alcun costruttore, il compilatore fornisce automaticamente un costruttore predefinito.



Un costruttore predefinito può contenere un argomento predefinito?

Sì, un costruttore può contenere argomenti predefiniti con valori predefiniti per un oggetto.

Ci sarà del codice inserito dal compilatore nel costruttore predefinito implementato dall'utente dietro le quinte?

Il compilatore dichiarerà implicitamente il costruttore predefinito se non fornito dal programmatore, lo definirà quando necessario. Il costruttore predefinito definito dal compilatore è necessario per eseguire determinate inizializzazioni degli interni della classe. Non toccherà i membri dei dati o i semplici tipi di dati vecchi (aggregati come un array, strutture, ecc…). Tuttavia, il compilatore genera codice per il costruttore predefinito in base alla situazione.

Considera una classe derivata da un'altra classe con il costruttore predefinito o una classe contenente un altro oggetto di classe con il costruttore predefinito. Il compilatore deve inserire il codice per chiamare i costruttori predefiniti della classe base/oggetto incorporato.

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;> }>

>

>

Produzione

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>>nome;> >cout<<>'Enter the Fee:'>;> >cin>>tariffa;> >}> > >void> display()> >{> >cout<' '<' '< } }; int main() { student s; s.display(); return 0; }>

>

quali mesi sono q1

>

Esistono diversi scenari in cui il compilatore deve inserire codice per garantire l'inizializzazione necessaria in base ai requisiti del linguaggio. Li avremo nei prossimi post. Il nostro obiettivo è essere consapevoli degli aspetti interni del C++, non usarli in modo errato.

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;> }>

>

>

Produzione

Sum =30 Sum =5>

Spiegazione : Qui abbiamo un costruttore con due parametri: parametro semplice e un parametro predefinito. Ora, ci sono due modi per chiamare questo costruttore:

  1. Innanzitutto, possiamo assegnare valori a entrambi gli argomenti e questi valori verranno passati al costruttore e l'argomento predefinito x con valore 0 verrà sovrascritto dal valore passato durante la chiamata (in questo caso 20). Quindi, il codice darà un output di 30 (come somma= a+x cioè 10+20= 30).
  2. Il secondo modo è non passare alcun valore per il parametro predefinito. Se lo fai, x prenderà il suo valore predefinito 0 come valore finale e calcolerà una somma di 5 (come, somma = a+x cioè 5+0=5).