C ++ este puntero

En C ++ Programming Language ‘esto’ es una palabra clave, el valor de ‘esto’ puntero es el dirección del objeto en el que se llama a la función miembro.

Tipo de ‘esto’ puntero es “puntero de la Clase” (o “puntero Objet” ) Tipo – if hay una clase llamada “Ejemplo” entonces, el tipo de ‘esto’ puntero será “Ejemplo *” .

Su tipo puede depende de la declaración de la función miembro en el que se utiliza el ‘esto’ puntero. If la función miembro se declara como const , volatile o const volatile – el tipo de ‘esto’ puntero será Ejemplo const * , Ejemplo volatile * o const volatile Ejemplo * respectivamente .
(Referencia: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf )

El uso de ‘esto’ cuando las variables locales y los miembros de datos de clase son mismo (while definir una función miembro)

#include <iostream>
using namespace std;
class Number
{
private:
int a;
public:
void get_a(int a)
{this->a=a;}
void put_a()
{cout<<"a= "<<a<<endl;}
};
int main()
{
Number N;
N.get_a(36);
N.put_a();
return 0;
}

    a= 36

Aquí, un es la variable local de la función get_a miembro () y también el tipo de datos miembro de la clase. Declaración this-> a = a; copia el valor de un (variable local) en el elemento de datos de la clase un .

El uso de ‘esto’ a return la referencia al objeto de llamar

‘esto’ puntero se puede utilizar para return la referencia de objeto actual / llamando, aquí es un ejemplo en el un objeto se inicializa con otro objeto usando constructor parametrizado.

#include <iostream>
using namespace std;
class Number
{
private:
int a;
public:
//default constructor
Number(){this->a=0;}
//parameterized constructor
Number (Number &n)
{
this->a=n.a;
}
void get_a(int a)
{this->a=a;}
void put_a()
{cout<<"a= "<<a<<endl;}
Number &set()
{
return *this;
}
};
int main()
{
Number N1;
N1.get_a(36);
cout<<"N1..."<<endl;
N1.put_a();
Number N2(N1.set());
cout<<"N2..."<<endl;
N2.put_a();
return 0;
}

    N1...
a= 36
N2...
a =36

En este caso, declaración Número N2 (N1.set ()); está inicializando los valor de un de objeto N2 con el valor de un de objeto N1 .


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *