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

AndruSoftware
from AndruSoftware More from this publisher
04.06.2015 Views

class Arboles { ... int arboles( ) const; int arboles( ); }; En el ejemplo anterior, el modificador const declara dos métodos distintos. El primero se usa en contextos constantes y el segundo en contextos variables. This apunta al objeto invocador. Las aplicaciones reales requieren que los nodos lleven datos. Esto significa especializar los nodos. Los datos pueden ser de cualquier tipo; usamos la construcción de plantilla: template class DatoNodo : public Nodo // La plantilla DatoNodo especializa la clase Nodo para que transporte da- // tos de cualquier tipo. Añade funcionalidad para accesar su elemento de // datos y también ofrece el mismo conjunto de funcionalidad estándar: // Copy Constructor, operator = ( ) y operator = = ( ). { T _data; public : DatoNodo ( const T dato, DatoNodo *derecha = NULL) : Nodo ( derecha ), _dato ( dato) { } DatoNodo ( const DatoNodo &val) : Nodo ( val), _dato ( val._dato) { } const DatoNodo *derecha ( ) const { return ((DatoNodo *) Nodo :: derecha( ) ); } DatoNodo *&derecha( ) {return ((DatoNodo *&) Nodo :: derecha( ) );} const T &dato( ) const { return _dato ;} T &dato ( ) { return _dato ;} DatoNodo &operator = ( const DatoNodo &val) { Nodo :: operator = (val); _dato = val._dato; return *this; }

Continuamos : }; const int operator == ( const DatoNodo &val) const { return ( Nodo :: operator == (val) && _data == val._dato ) ; } const int operator != ( const DatoNodo &val) const { return !( *this == val); }

class Arboles<br />

{<br />

...<br />

int arboles( ) const;<br />

int arboles( );<br />

};<br />

En el ejemplo anterior, el modificador const <strong>de</strong>clara dos métodos distintos. El primero<br />

se usa <strong>en</strong> contextos constantes y el segundo <strong>en</strong> contextos variables.<br />

This apunta al objeto invocador.<br />

Las aplicaciones reales requier<strong>en</strong> que los nodos llev<strong>en</strong> datos. Esto significa<br />

especializar los nodos. Los datos pue<strong>de</strong>n ser <strong>de</strong> cualquier tipo; usamos la construcción<br />

<strong>de</strong> plantilla:<br />

template <br />

class DatoNodo : public Nodo<br />

// La plantilla DatoNodo especializa la clase Nodo para que transporte da-<br />

// tos <strong>de</strong> cualquier tipo. Aña<strong>de</strong> funcionalidad para accesar su elem<strong>en</strong>to <strong>de</strong><br />

// datos y también ofrece el mismo conjunto <strong>de</strong> funcionalidad estándar:<br />

// Copy Constructor, operator = ( ) y operator = = ( ).<br />

{<br />

T _data;<br />

public :<br />

DatoNodo ( const T dato, DatoNodo *<strong>de</strong>recha = NULL) :<br />

Nodo ( <strong>de</strong>recha ), _dato ( dato) { }<br />

DatoNodo ( const DatoNodo &val) :<br />

Nodo ( val), _dato ( val._dato) { }<br />

const DatoNodo *<strong>de</strong>recha ( ) const {<br />

return ((DatoNodo *) Nodo :: <strong>de</strong>recha( ) );<br />

}<br />

DatoNodo *&<strong>de</strong>recha( ) {return ((DatoNodo *&) Nodo :: <strong>de</strong>recha( ) );}<br />

const T &dato( ) const { return _dato ;}<br />

T &dato ( ) { return _dato ;}<br />

DatoNodo &operator = ( const DatoNodo &val) {<br />

Nodo :: operator = (val);<br />

_dato = val._dato;<br />

return *this;<br />

}

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

Saved successfully!

Ooh no, something went wrong!