este ponteiro
Em uma classe, existe um ponteiro especial muito escondido, que é o ponteiro this !
Por que é especial? Porque enquanto uma classe for definida, o sistema irá predefinir um ponteiro chamado this e apontando para o objeto atual. Embora não possamos ver, podemos usá-lo.
Por exemplo, vejamos uma função membro de uma classe de relógio, o código usado para definir o valor do tempo:
intClock::SetTime(inth,intm,ints){H=h;M=m;S=s;}
Você pode ver que as variáveis membro da própria classe Clock são H, M e S. Elas precisam receber valores externos. Para distingui-las, definimos os parâmetros formais em letras minúsculas. Então, se sabemos da existência disso, podemos escrever assim:
intClock::SetTime(inth,intm,ints){this->H=h;this->M=m;this->S=s;}//Também pode ser escrito como: intClock::SetTime(inth, intm,ints ){(*isto).H=h;(*isto).M=m;(*isto).S=s;}
Pode-se observar que os dois métodos de escrita acima utilizam o ponteiro this oculto no objeto, que pode claramente ser membro desta classe, distinguindo claramente este objeto das variáveis externas. Na verdade, quando um objeto chama sua função membro, mesmo que existam vários objetos desta classe no programa, há apenas um código para a função membro. Portanto, para distinguir qual objeto chama a função membro, o compilador também. converte É usado na forma desta-> função membro.