¿El compilador de C++ crea un constructor predeterminado cuando escribimos el nuestro?

No, el compilador de C++ no crea un constructor predeterminado cuando inicializamos el nuestro, el compilador de forma predeterminada crea un constructor predeterminado para cada clase; Pero, si definimos nuestro propio constructor, el compilador no crea el constructor predeterminado. Esto se debe a que el constructor predeterminado no acepta ningún argumento y si se crean dos constructores predeterminados, es difícil para el compilador llamar al constructor predeterminado.

El ejemplo 1 se compila sin ningún error, pero la compilación del programa 2 falla con el error «no hay función coincidente para llamar a `myInteger::myInteger()'» 

Ejemplo 1: 

CPP

// C++ program to demonstrate a program without any error
#include <iostream>
 
using namespace std;
 
class myInteger {
private:
    int value;
 
    //...other things in class
};
 
int main()
{
    myInteger I1;
    getchar();
    return 0;
}

Ejemplo 2:

CPP

// C++ program to demonstrate a program which will throw an
// error
#include <iostream>
 
using namespace std;
 
class myInteger {
private:
    int value;
 
public:
    myInteger(int v) // parameterized constructor
    {
        value = v;
    }
 
    //...other things in class
};
 
int main()
{
    myInteger I1;
    getchar();
    return 0;
}

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *