lunes, 13 de septiembre de 2010

C++: Constructors (Contructores en C++)

 

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 {

public:

Point(); // parameterless default constructor

Point(int new_x, int new_y); // constructor with parameters

int getX();

int getY();

private:

int x;

int y;

};

#endif

 

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

C++: Constructors

No hay comentarios: