Puntero this
Última actualización del post: Diciembre de 2019
En C++, todo proceso llevado a cabo por una función miembro no-estática de una clase se realiza implícitamente sobre el objeto *this, siendo this el nombre del puntero que almacena la dirección en memoria del objeto que invocó a dicha función.
El tipo del puntero this será cv X*, siendo X el nombre de la clase a la que pertenezca la función miembro y cv los calificadores const-volatile que dicha función pudiese tener. Observemos, a este respecto, que los constructores y destructores no pueden acompañarse de dichos calificadores, por lo que el puntero this siempre será de tipo X* en su interior.
El puntero this puede ser empleado en el cuerpo de cualquier función miembro no-estática, en la lista de inicialización de un constructor y en los inicializadores por defecto de datos miembro. La indirección this-> es añadida implícitamente al comienzo del nombre de cualquier miembro no estático de la clase. Consideremos, por ejemplo, la siguiente función miembro de nombre reset_id() perteneciente a la interfaz pública de la clase Student:
class Student {
int id_;
std::string name_;
public:
// constructores y resto de interfaz pública...
void reset_id(int id) { id_ = id; }
};
Podríamos referirnos explícitamente al objeto que invoque dicha función, si así lo deseáramos, a través del puntero this que lo referencia:
void Student::reset_id(int id) { this->id_ = id; }