Contenido del Curso
POO en C++
POO en C++
Qué Es un Constructor de la Clase
Un constructor es un método especial de una clase que se invoca cuando se crea un objeto. Permite inicializar los atributos con valores significativos.
Mediante el uso de constructores, se puede simplificar la creación de objetos. Sin un constructor, sería necesario establecer cada propiedad de forma individual y posiblemente llamar a varios métodos solo para dejar el objeto en un estado utilizable.
El objetivo principal de un constructor es inicializar la instancia recién creada. Puede asignar los valores iniciales de los atributos en función de los parámetros pasados al constructor, asegurando que el objeto comience en un estado válido.
Sintaxis del Constructor
Aunque el proceso de desarrollar un constructor puede parecer sencillo, implica numerosas consideraciones específicas. El enfoque general para crear uno es:
student.h
class Student { public: Student() { name = 'Default'; } std::string name; };
Nombre: el constructor tiene el mismo nombre que la propia clase;
Tipo de retorno: los constructores no tienen tipo de retorno, ni siquiera
void
;Parámetros: los constructores pueden recibir parámetros y pueden ser sobrecargados con diferentes conjuntos de parámetros para permitir varias formas de inicializar objetos;
Invocación automática: el constructor es llamado automáticamente por el compilador cuando se crea un objeto.
Constructor por defecto
Un constructor por defecto es un constructor que puede ser invocado sin ningún argumento. Así es como se definen y utilizan los constructores por defecto:
main.cpp
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }
Puedes experimentar con el código anterior. La lógica escrita en el método Example() se ejecuta cada vez que se crea una instancia de la clase.
Intenta agregar un objeto más o cambiar la lógica dentro del constructor.
Si no se define un constructor, el compilador genera uno por defecto. Su comportamiento depende de los tipos de las variables miembro: tipos fundamentales, tipos con constructor por defecto o tipos definidos por el usuario.
main.cpp
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }
Un atributo es un tipo de dato fundamental. El constructor por defecto generado automáticamente no inicializa las variables miembro de tipo incorporado. Estas tendrán valores indeterminados si se crea un objeto y no se inicializan explícitamente estos campos.
Puede que observes que el compilador proporciona un valor consistente para la variable value, pero el estándar no lo exige y es posible que contenga un valor basura.
¡Gracias por tus comentarios!