Tema
23 El Puntero this
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Teoría:
Utilidad del Puntero this
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
El puntero this es una variable predefinida para todas
las funciones u operadores miembro de una clase. Este puntero contiene
la dirección del objeto concreto de la clase al que se está
aplicando la función o el operador miembro. Se puede decir
que *this es un alias del objeto correspondiente.
Conviene tener en cuenta que cuando una función miembro se
aplica a un objeto de su clase (su argumento implícito),
accede directamente a las variables miembro (sin utilizar el operador
punto o flecha), pero no tiene forma de referirse al objeto como
tal, pues no le ha sido pasado explícitamente como argumento.
Este problema se resuelve con el puntero this. Considérese
el siguiente ejemplo:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Class
C_Cuenta {
//...
public:
// ...
inline double GetInteres()
{
// Igual a : return Interes;
return this->Interes;
}
// ....
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
En
el caso de operadores miembro sobrecargados, el puntero this
es la forma que se utiliza para referirse al objeto al que se está
aplicando el operador como primer operando.
Hay que señalar que las funciones friend que no son miembros
de ninguna clase no disponen de puntero this.
Así
al definir las funciones miembro de una clase, a veces es necesario
referise al objeto invocador. El apuntador this es
un apuntador predefinido que apunta al objeto invocador. Por ejemplo,
consideremos una clase como la siguiente:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class
Muestra {
public:
...
void
mostrar_cosas();
...
private:
int
cosas;
...
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Las
siguientes dos formas de definir la función miembro mostrar_cosas
son equivalentes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
Muestra::mostrar_cosas(){
cout
<< cosas;
}
//
No es un estilo recomendable
void
Muestra::mostrar_cosas() {
cout
<< (this->cosas);
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cabe
señalar que this no es el nombre de un objeto invocador.
No podemos alterar el valor de dicho apuntador; siempre apunta
al objeto invocador.
|
|
|
|
|
|
|
|
|
|
|
|