Curso de C++ (Página 32)

pagina031 Principal pagina033

CAPITULO 32 El puntero this

Para cada objeto declarado de una clase se mantiene una copia de sus datos, pero todos comparten la misma copia de las funciones de esa clase.

Esto ahorra memoria y hace que los programas ejecutables sean más compactos, pero plantea un problema.

Cada función de una clase puede hacer referencia a los datos de un objeto, modificarlos o leerlos, pero si sólo hay una copia de la función y varios objetos de esa clase, ¿cómo hace la función para referirse a un dato de un objeto en concreto?

La respuesta es: usando el puntero this. Cada objeto tiene asociado un puntero a si mismo que se puede usar para manejar sus miembros.

Volvamos al ejemplo de la clase pareja:

#include <iostream.h> 
 
class pareja
{
   public:
      // Constructor
      pareja(int a2, int b2);
      // Funciones miembro de la clase "pareja"
      void Lee(int &a2, int &b2);
      void Guarda(int a2, int b2);
   private:
      // Datos miembro de la clase "pareja"
      int a, b; 
   public:
};

Para cada dato podemos referirnos de dos modos distintos, lo veremos con la función Guarda. Esta es la implementación que usamos en el capítulo 30, que es como normalmente nos referiremos a los miembros de las clases:

void pareja::Guarda(int a2, int b2)
{
   a = a2;
   b = b2;
}

Veamos ahora la manera equivalente usando el puntero this:

void pareja::Guarda(int a2, int b2)
{
   a = this->a2;
   b = this->b2;
}

Normalmente no será necesario usar el puntero this en nuestros programas, pero nos resultará muy útil en el futuro, cuando implementemos estructuras dinámicas de datos.


pagina031 Principal pagina033