Constructores
y destructores de c ++
1. Constructores
Los constructores son funciones
miembro especiales que sirven para inicializar un objeto de una determinada
clase al mismo tiempo que se declara.
Los constructores son especiales por
varios motivos:
·
Tienen el mismo nombre que la clase a la que pertenecen.
·
No tienen tipo de retorno, y por lo tanto no retornan ningún valor.
·
No pueden ser heredados.
·
Por último, deben ser públicos, no tendría ningún sentido declarar un
constructor como privado, ya que siempre se usan desde el exterior de la clase,
ni tampoco como protegido, ya que no puede ser heredado.
Sintaxis:
class <identificador
de clase> {
public:
<identificador de
clase>(<lista de parámetros>) [: <lista de constructores>] {
<código del constructor>
}
...
}
Añadamos un constructor a nuestra
clase pareja:
#include <iostream>
using namespace std;
class pareja {
public:
// Constructor
pareja(int a2, int b2);
// Funciones miembro de la clase "pareja"
void Lee(int &a2, int &b2);
void Guarda(int a2, int b2);
private:
// Datos miembro de la clase "pareja"
int a, b;
};
pareja::pareja(int a2, int b2) {
a = a2;
2. Destructores
Los destructores son funciones
miembro especiales que sirven para eliminar un objeto de una determinada clase.
El destructor realizará procesos necesarios cuando un objeto termine su ámbito
temporal, por ejemplo liberando la memoria dinámica utilizada por dicho objeto
o liberando recursos usados, como ficheros, dispositivos, etc.
Al igual que los constructores, los
destructores también tienen algunas características especiales:
·
También tienen el mismo nombre que la clase a la que pertenecen, pero
tienen el símbolo ˜ delante.
·
No tienen tipo de retorno, y por lo tanto no retornan ningún valor.
·
No tienen parámetros.
·
No pueden ser heredados.
·
Deben ser públicos, no tendría ningún sentido declarar un destructor
como privado, ya que siempre se usan desde el exterior de la clase, ni tampoco
como protegido, ya que no puede ser heredado.
·
No pueden ser sobrecargados, lo cual es lógico, puesto que no tienen
valor de retorno ni parámetros, no hay posibilidad de sobrecarga.
Cuando se define un destructor para
una clase, éste es llamado automáticamente cuando se abandona el ámbito en el
que fue definido. Esto es así salvo cuando el objeto fue creado dinámicamente
con el operador new, ya que en ese caso, cuando es necesario eliminarlo, hay
que hacerlo explícitamente usando el operador delete.
En general, será necesario definir un
destructor cuando nuestra clase tenga datos miembro de tipo puntero, aunque
esto no es una regla estricta.
Ejemplo:
#include <iostream>
#include <cstring>
using namespace std;
class cadena {
public:
cadena(); // Constructor
por defecto
cadena(const char *c); // Constructor desde cadena c
cadena(int n); // Constructor de cadena de
n caracteres
cadena(const cadena &); // Constructor
copia
~cadena(); // Destructor
void Asignar(const char *dest);
char *Leer(char *c);
private:
char *cad; // Puntero a char: cadena de
caracteres
};
PARA VER EL
FUNCIONAMIENTO DEL PROGRAMA DE EJEMPLO, DIRIGIRSE A ESTE ENLACE DONDE COPIE Y
PEGUE EL EJEMPLO .
- http://cpp.sh/
3. Conclusiones:
·
Ayudan al objeto y
estos mismos son tipo parte dentro de la estructura.
·
Los dos no tienen un
tipo de retorno por lo cual no retornan ningún valor.
·
Deben ser públicos para
que se lo pueda utilizar en el exterior del programa y no tenga dificultades.
4. Bibliografía:
No hay comentarios:
Publicar un comentario