04.06.2015 Views

Manual básico de Programación en C++

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6.3. CONSTRUCCION Y DESTRUCCION<br />

En g<strong>en</strong>eral, anterior a la ejecución <strong>de</strong>l cuerpo particular <strong>de</strong>l constructor, los<br />

constructores <strong>de</strong> cada superclase son llamados para inicializar su parte <strong>de</strong>l objeto<br />

creado. Así, al constructor <strong>de</strong> clase <strong>de</strong>rivada siempre llamará primero al constructor <strong>de</strong><br />

su clase base, a fin <strong>de</strong> crear y <strong>de</strong> inicializar los miembros <strong>de</strong> la clase base <strong>de</strong> la clase<br />

<strong>de</strong>rivada.<br />

Po<strong>de</strong>mos especificar los constructores <strong>de</strong>seados <strong>de</strong>spués <strong>de</strong> un signo <strong>de</strong> dos puntos (:).<br />

Ejemplo:<br />

class Puntos3D : public Punto<br />

{<br />

...<br />

public:<br />

Puntos3D ( ) {...}<br />

Puntos3D (<br />

const int x,<br />

const int y,<br />

const int z) : Punto (x,y)<br />

{<br />

_z = z;<br />

}<br />

...<br />

};<br />

Si hay más superclases, proveemos sus llamadas a constructor como una lista separada<br />

por comas. Este mecanismo se usa también para crear objetos cont<strong>en</strong>idos.<br />

La inicialización dinámica pue<strong>de</strong> ser usada con tipos <strong>de</strong> datos integrados. Por ejemplo:<br />

Punto ( ): _x(0), _y(0) { }<br />

Punto ( const int x, const int y) : _x(x), _y(y) { }<br />

Los <strong>de</strong>structores serán llamados <strong>en</strong> or<strong>de</strong>n inverso a las llamadas <strong>de</strong> constructor, por lo<br />

que un <strong>de</strong>structor <strong>de</strong> clase <strong>de</strong>rivada será llamado antes <strong>de</strong>l <strong>de</strong>structor <strong>de</strong> su clase base ( o<br />

superclase). ( Ver apdo. 3.5., pág. 25 ).<br />

6.4. HERENCIA MULTIPLE :<br />

La her<strong>en</strong>cia múltiple significa que una clase <strong>de</strong>rivada (subclase) hereda los miembros<br />

<strong>de</strong> varias superclases.<br />

Sintaxis:<br />

class tipo_base_<strong>de</strong>rivada: (public/private/protected)tipo_clase_base1,<br />

(public/private/protected)tipo_clase_base2 { };

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!