Cuando se crea un objeto a partir de instanciar una clase, C++ llama al constructor de esa clase. Si ningún constructor es definido, se invoca un constructor por default, que reserva memoria para el objeto, pero no lo inicializa.
Por que se debe definir un constructor.
Miembros no inicializados guardan basura. creando un posible bug (por ejemplo un puntero no inicializado, valores ilegales, o inconsistentes…).
Declarando un constructor.
Un constructor es similar a una funcion, pero con las siguientes diferencias:
1. Lleva el mismo nombre que la clase.
2. No hay un tipo de dato de regreso.
3. No hay declaración que no regresa nada.
Ejemplo (Extracto de tres diferentes archivos):
//=== point/point.h =================== |
#ifndef POINT_H #define POINT_H class Point {
|
Parte del archivo de implementación.
//=== point/point.cpp =========== |
. . . Point::Point() { // default constructor x = 0; y = 0; } Point::Point(int new_x, int new_y) { // constructor x = new_x; y = new_y; } . . . |
Aqui una parte de un archivo que usa la clase “Point”
//=== point/main.cpp ============ |
. . . Point p; // calls our default constructor Point q(10,20); // calls constructor with parameters Point* r = new Point(); // calls default constructor Point s = p; // our default constructor not called . . . . |
fuete: http://www.fredosaurus.com/notes-cpp/oop-condestructors/constructors.html
No hay comentarios:
Publicar un comentario