CONSTRUCTORES
Un constructor es un método que pertenece a una clase y el cual debe tener el mismo nombre de la clase a la que pertenece.
A diferencia de los otros métodos de la clase, un constructor deberá ser del tipo void, es decir, el mismo no regresará valor alguno.
Como característica especial a la hora de implementar un constructor, justo después de la declaración de los parámetros, se encuentra lo que se llama "lista de inicializadores". Su objetivo es llamar a los constructores de los atributos que conforman el objeto a construir.
El objetivo principal del constructor es establecer las condiciones necesarias dentro de la memoria y crear una copia del objeto mismo dentro de la memoria.
Los constructores suelen usarse para la inicialización de los atributos de los objetos instanciados. Por ejemplo, con las instrucciones:
Suma s
s.setA(80);
s.setB(100);
Existen varios tipos de constructores en C++:
- Constructor predeterminado.Es el constructor que no recibe ningún parámetro en la función. Si no se definiera ningún constructor, el sistema proporcionaría uno predeterminado. Es necesario para la construcción de estructuras y contenedores de la STL.
- Constructor de copia. Es un constructor que recibe un objeto de la misma clase, y realiza una copia de los atributos del mismo. Al igual que el predeterminado, si no se define, el sistema proporciona uno.
- Constructor de conversión.Este constructor, recibe como único parámetro, un objeto o variable de otro tipo distinto al suyo propio. Es decir, convierte un objeto de un tipo determinado a otro objeto del tipo que estamos generando.
DESTRUCTORES
Un destructor es un método que pertenece a una clase y el cual debe tener el mismo nombre de la clase a la que pertenece.
A diferencia de los otros métodos de la clase, un destructor deberá ser del tipo void, es decir, el mismo no regresará valor alguno.
Para diferenciar a un método destructor de un método constructor, al nombre del destructor se le debe anteponer el caracter ~
El objetivo principal del destructor es el de retirar de la memoria al objeto, o sea, el destructor hace todo lo contrario que el constructor.
Los destructores suelen usarse para liberar memoria que haya sido solicitada por el objeto a través de las ordenes malloc(), new, etc.
En tales casos se deberá incluir dentro del método destructor la orden free, delete, etc., según sea el caso.
Los destructores son funciones miembro especiales llamadas automáticamente en la ejecución del programa, y por tanto no tienen por qué ser llamadas explícitamente por el programador. Sus principales cometidos son:
· Liberar los recursos computacionales que el objeto de dicha clase haya adquirido en tiempo de ejecución al expirar éste.
· Quitar los vínculos que pudiesen tener otros recursos u objetos con éste.
Los destructores son invocados automáticamente al alcanzar el flujo del programa el fin del ámbito en el que está declarado el objeto. El único caso en el que se debe invocar explícitamente al destructor de un objeto, es cuando éste fue creado mediante el operador new, es decir, que éste vive en memoria heap, y no en la pila de ejecución del programa. La invocación del destructor de un objeto que vive en heap se realiza a través del operador delete o delete [] para arrays.
Existen dos tipos de destructores pueden ser públicos o privados, según si se declaran:
- Si es público se llama desde cualquier parte del programa para destruir el objeto.
- Si es privado no se permite la destrucción del objeto por el usuario.
El uso de destructores es clave en el concepto de Adquirir Recursos es Inicializar.