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