Hola, me gustaría plantear algunas dudas acerca de lo que hace internamente el puntero this en el compilador con C++.
Por ejemplo tengo una clase cualquiera:
class MiClase
{
private: int x;
public:
void GetX() const;
void SetX(int x);
};
Imaginemos que yo creo un objeto de la clase MiClase llamado objeto.
Ahora en el main invoco al metodo GetX ----> objeto.GetX();
Pues bien, al ser el método:
void MiClase::GetX() const
{
}
el compilador internamente trata el puntero this de esta forma?
const MiClase *const this
ó de esta otra?
const MiClase *this
Creo que será de la primera forma no? Porque el puntero this siempre es constante (al hacer *const this indica que es un puntero constante que no puede cambiar de valor) y const MiClase indica que el objeto que invoca al método es de tipo MiClase y sus valores no son modificables.
Ahora al invocar al método SetX(int x) -----> objeto.SetX(5);
void MiClase::SetX(int x)
{
}
el compilador internamente trata al puntero this así?
MiClase *const this;
o así?
MiClase *this;
De nuevo pienso que será de la primera manera no? Porque volvemos a indicar que *const this es un puntero constante (no cambia de valor) y en este caso el valor del objeto que invoca al método sí se puede modificar.
A ver si estoy en lo cierto, sino os agradecería que me lo explicarais para tenerlo bien claro.
Gracias.