Un constructor sin ningún argumento o con el valor predeterminado para cada argumento se dice que es el Constructor predeterminado .
Un constructor que tiene una lista de parámetros cero o, en otro sentido, un constructor que no acepta argumentos se denomina constructor de argumentos cero o constructor predeterminado.
Si el programador no define el constructor predeterminado en el código fuente, entonces el compilador definió el constructor predeterminado implícitamente durante la compilación.
Si el programador define explícitamente el constructor predeterminado en el programa, entonces el compilador no definirá el constructor implícitamente, sino que llamará al constructor implícitamente.
¿Cuál es el significado del constructor predeterminado?
si por rudyard kipling explicación línea por línea
Se utilizan para crear objetos que no tienen ningún valor inicial específico.
¿Se proporciona automáticamente un constructor predeterminado?
Si no se declara explícitamente ningún constructor en la clase, el compilador proporciona automáticamente un constructor predeterminado.
¿Puede un constructor predeterminado contener un argumento predeterminado?
Sí, un constructor puede contener un argumento predeterminado con valores predeterminados para un objeto.
¿El compilador insertará algún código en el constructor predeterminado implementado por el usuario detrás de escena?
El compilador declarará implícitamente el constructor predeterminado si el programador no lo proporciona y lo definirá cuando sea necesario. Se requiere el constructor predeterminado definido por el compilador para realizar cierta inicialización de los componentes internos de la clase. No tocará los miembros de datos ni los tipos de datos antiguos (agregados como una matriz, estructuras, etc.). Sin embargo, el compilador genera código para el constructor predeterminado según la situación.
Considere una clase derivada de otra clase con el constructor predeterminado, o una clase que contiene otro objeto de clase con el constructor predeterminado. El compilador necesita insertar código para llamar a los constructores predeterminados de la clase base/objeto incrustado.
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;> }> |
>
>Producción
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>>nombre;> > cout<<> 'Enter the Fee:'> ;> > cin>>tarifa;> > }> > > void> display()> > {> > cout<' '<' '< } }; int main() { student s; s.display(); return 0; }> |
>
carácter a int en java
>
Existen diferentes escenarios en los que el compilador necesita insertar código para garantizar la inicialización necesaria según los requisitos del idioma. Los tendremos en próximos posts. Nuestro objetivo es conocer las partes internas de C++, no utilizarlas incorrectamente.
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;> }> |
>
>Producción
Sum =30 Sum =5>
Explicación : Aquí, tenemos un constructor con dos parámetros: un parámetro simple y un parámetro predeterminado. Ahora bien, hay dos formas de llamar a este constructor:
- Primero, podemos asignar valores a ambos argumentos y estos valores se pasarán al constructor y el argumento predeterminado x con valor 0 será anulado por el valor pasado durante la llamada (en este caso 20). Por lo tanto, el código dará un resultado de 30 (como, suma = a+x, es decir, 10+20 = 30).
- La segunda forma es no pasar ningún valor para el parámetro predeterminado. Si lo hace, x tomará su valor predeterminado 0 como valor final y calculará una suma de 5 (como suma = a+x, es decir, 5+0=5).