Em um programa C ++, se você criar o objeto a da classe X, então você pode obter o endereço de uma usando o "esta" ponteiro. O endereço está disponível como uma variável local nas funções de membro não-estático de X, e seu tipo é const X *. o "esta" ponteiro funciona porque C ++ cria instâncias de seus membros de dados, e mantém uma cópia de cada função de membro.
Coisas que você precisa
- habilidade avançada C ++
- C ++ compilador com IDE, como Visual Studio 2008
instruções
Use o "esta" ponteiro para descobrir a localização de uma instância de classe. Como qualquer ponteiro, ele armazena um endereço. função de membro GetAddress () da classe C ++ X devolve o endereço de uma determinada instância da classe X:
class X {
público:
const X * const GetAddress () {
voltar this-
} -funções de membro de acesso ou dados membro dentro de uma função membro da classe com o "esta" a palavra-chave e "-gt;" operador. O exemplo abaixo pode trabalhar sem "este-gt ;." Mas se a biblioteca matriz tem uma classe pai com os mesmos nomes de membros, "este gt;" deixa claro que o que é chamado pertence à classe atual, e não seu pai:
classe Matrix {
linhas int, cols-
público:
Matrix (): linhas (0), cols (0) {
this-gt; Init () -
}
~ Matriz () -
int GetRows () const {
devolver este-gt; rows-
}
privado:
vazio Init () -
} -Estudar uma classe que tem a sobrecarga de operador e estudar o uso desta. O seguinte trecho de código demonstra como ele pode ser redefinido:
const X * this-gt; operator () {
voltar this-
}
dicas & avisos
- Manter essas regras em mente quando se trabalha com um ponteiro: não tente mudar endereços- eles são unmodifiable- não incluem endereços sempre que o tamanho de um objeto é calculated- você não pode acessar um endereço de funções de membro estático.