logo

Constructors per defecte en C++

Es diu que un constructor sense arguments o amb el valor predeterminat per a cada argument és el Constructor per defecte .

Un constructor que té una llista de paràmetres zero o, en un altre sentit, un constructor que no accepta arguments s'anomena constructor d'arguments zero o constructor predeterminat.



Si el programador no defineix el constructor per defecte al codi font, llavors el compilador el definirà implícitament durant la compilació.

Si el programador defineix explícitament el constructor per defecte al programa, aleshores el compilador no definirà el constructor implícitament, però el cridarà implícitament.

Quina és la importància del constructor predeterminat?



recerca contradictòria

S'utilitzen per crear objectes, que no tenen cap valor inicial específic.

Es proporciona automàticament un constructor predeterminat?

Si no es declara cap constructor explícitament a la classe, el compilador proporciona automàticament un constructor predeterminat.



Pot un constructor predeterminat contenir un argument per defecte?

Sí, un constructor pot contenir arguments per defecte amb valors per defecte per a un objecte.

Hi haurà codi inserit pel compilador al constructor predeterminat implementat per l'usuari darrere de les escenes?

El compilador declararà implícitament el constructor predeterminat si no el proporciona el programador, el definirà quan ho necessiti. El constructor predeterminat definit pel compilador és necessari per fer certa inicialització de les classes internes. No tocarà els membres de dades ni els tipus de dades antics (agregats com una matriu, estructures, etc.). Tanmateix, el compilador genera codi per al constructor predeterminat en funció de la situació.

Considereu una classe derivada d'una altra classe amb el constructor per defecte, o una classe que conté un altre objecte de classe amb el constructor per defecte. El compilador necessita inserir codi per cridar als constructors predeterminats de la classe base/objecte incrustat.

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

>

>

Sortida

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

>

Com obtenir el joc Pigeon a Android

>

Hi ha diferents escenaris en què el compilador necessita inserir codi per garantir la inicialització necessària segons els requisits del llenguatge. Els tindrem en properes publicacions. El nostre objectiu és conèixer els elements interns de C++, no utilitzar-los de manera incorrecta.

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

>

>

Sortida

Sum =30 Sum =5>

Explicació: Aquí, tenim un constructor amb dos paràmetres simples i un paràmetre per defecte. Ara, hi ha dues maneres d'anomenar aquest constructor:

  1. En primer lloc, podem assignar valors als dos arguments i aquests valors es passaran al constructor i l'argument predeterminat x amb valor 0 se substituirà pel valor passat durant la trucada (en aquest cas 20). Per tant, el codi donarà una sortida de 30 (com, suma= a+x, és a dir, 10+20= 30).
  2. La segona manera és no passar cap valor per al paràmetre predeterminat. Si ho feu, x agafarà el seu valor per defecte 0 com a valor final i calcularà una suma de 5 (com, suma = a+x, és a dir, 5+0=5).