C++
Home

Usando o Ponteiro This

Todo objeto tem acesso ao seu próprio endereço através do ponteiro this.
O this é usado para prover referência tanto para os membros de dados tanto para as funções de um objeto. Ele pode ser usado explicitamente.

Um uso para o this é evitar que um objeto seje atribuído a si próprio, pois isso causa danos no programa.
Um outro uso para este ponteiro é habilitar o chamadas em cascata de funções membro.

#include <iostream>

class numeros {
public:
  numeros( int = 0 );

  numeros &atribuir( int );
  void imprimir();

private:
  int x;
};

numeros::numeros( int a )
{
  x = a;
}

numeros &numeros::atribuir( int a )
{
  x = a;
  return *this;    
// habilita encadeamento
}

void numeros::imprimir()
{
  std::cout << x << std::endl;
  std::cout << this->x << std::endl;
  std::cout << (*this).x << std::endl;
}

int main()
{
  numeros n;
  n.imprimir();

  n.atribuir( 20 ).imprimir();   // encadeando chamadas de funções membro

  std::cin;
  return 0;
}

Observe que nestas linhas, imprimimos uma variável com this. Um com o operador -> ( seta ). E outro com o ponteiro.

  std::cout << this->x << std::endl;
  std::cout << (*this).x << std::endl;

Nesta linha:

  n.atribuir( 20 ).imprimir();   // encadeando chamadas de funções membro

Temos que tomar cuidado, pois a ordem deve ser essa ( atribuir, imprimir ), por que imprimir é não retorna uma referencia para n se for colocado antes, teremos um erro de sintaxe.

 

Perguntas??? Email