Cargando la página...

Usted está aquí:

Plantillas en C++

Publicado por timo el 28.05.2008 09:24:09 en C++ - Nivel Intermedio

Avatar de timo
Avatar de

Una forma muy simple de reutilizar código, utilizando una de las tantas potencialidades del lenguaje.

Página 01 de 01 | Versión completa

Dentro del ámbito de la programación orientada a objetos, existe un concepto llamado estructuras de datos, que no son una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación.

Con este objetivo, decimos que se deben manipular datos elementales, entonces, toda estructura de datos debe servir para cualquier tipo de datos.

Esto es posible utilizando una de las mas potentes características de C++, las plantillas, ahora definiremos una estructura simple de pila, que manipule cualquier tipo de datos.

El funcionamiento de pila es sencillo, el último en llegar a la pila es el primero en ser atendido(imaginen una pila de peticiones de compra).

Basta con un fichero:

template <class T>
class Pila{
    private:
        T* datos;
        int tamanho;
        int tope;
    public:
        Pila( int );        //constructor por defecto
        ~Pila();            //destructor
        boolean push( T& ); //ponemos dentro de la pila
        T pop();            //quitamos de la pila
        T tope()const;      //retornamos el último dato agregado
        int getTamanho();
};
//implementacion
template <class T>
Pila< T >::Pila( int n ){
    tamanho = n;
    datos = new T[ tamanho ];//creamos nuestro arreglo de algun tipo de dato
    tope = -1;
}

template <class T>
Pila< T >::~Pila( int n ){
    delete T;        //liberamos recursos, siempre
}

template <class T>
boolean Pila< T >::push( T &dato ){
    if( tope < tamanho ){
        tope++;
        datos[ tope ] = dato;
        return true;
    }
    return false;
}

template <class T>
T Pila< T >::pop( ){
    if( tope > -1 )
        return datos[ tope ];
    return 0;
}

template <class T>
int Pila< T >::getTamanho( )const{
    return tamanho;
}


Si quiero crear una pila de enteros(de tamaño 5):
Pila< int > p( 5 );

o con punteros:
Pila< int > *p = new Pila< int >( 5 );

o de algun otro tipo:
Pila< double > p( 5 );


Asi creamos estructuras de datos genéricas en C++, cosa que también puede realizarse en Java, para reutilizar nuestro código al máximo. Este es un ejemplo muy sencillo, que puede implementarse de mejor forma, o con diferentes características, pero de ejemplo supongo que funciona.

Página 01 de 01 | Versión completa

Descargas asociadas al artículo:

No existen descargas asociadas

Estadisticas:

Artículo leido 366 veces con un puntaje de 8.50 pts

Comentarios.

Sus comentarios son importantes.

No hay comentarios para listar, si desea puede crear el primer comentario para este artículo.

Debe estar identificado para agregar un comentario