este puntero
En una clase, hay un puntero especial muy oculto, que es el puntero this .
¿Por qué es especial? Porque mientras se defina una clase, el sistema predefinirá un puntero llamado así y que apuntará al objeto actual. Aunque no podamos verlo podemos usarlo.
Por ejemplo, veamos una función miembro de una clase de reloj, el código utilizado para establecer el valor de tiempo:
intReloj::EstablecerHora(inth,intm,ints){H=h;M=m;S=s;}
Puede ver que las variables miembro de la clase Clock en sí son H, M y S. Es necesario asignarles valores desde el exterior. Para distinguirlos, definimos los parámetros formales en minúsculas. Entonces si conocemos la existencia de esto, podemos escribir así:
intClock::SetTime(inth,intm,ints){this->H=h;this->M=m;this->S=s;}//También se puede escribir como: intClock::SetTime(inth, intm,ints ){(*esto).H=h;(*esto).M=m;(*esto).S=s;}
Se puede ver que los dos métodos de escritura anteriores utilizan el puntero this oculto en el objeto, que claramente puede ser miembro de esta clase, distinguiendo así claramente este objeto de las variables externas. De hecho, cuando un objeto llama a su función miembro, incluso si hay varios objetos de esta clase en el programa, solo hay un código para la función miembro. Por lo tanto, para distinguir qué objeto llama a la función miembro, el compilador también. converts Se utiliza en la forma de this->función miembro.