nadie
En Java puede hacer referencia al objeto actual haciendo: this.x = x
. ¿Cómo se hace esto en C++?
Suponga que cada uno de estos ejemplos de código son parte de una clase llamada Shape
.
Java:
public void setX(int x)
{
this.x = x;
}
C++:
public:
void setX(int x)
{
//?
}
Misma palabra: this
La única diferencia es que es un puntero, por lo que debe usar el ->
operador:
void setX(int x)
{
this->x = x;
}
-
No es relevante, pero recuerdo que Stroustrup dijo en alguna parte que hacer de esto un puntero en C++ fue ‘probablemente un error’.
– jajaja
2 de agosto de 2011 a las 5:59
-
Eso no es del todo exacto.
this
como puntero es anterior a las referencias; si las referencias se hubieran inventado antesthis
hubiera sido una referencia.– MSalters
2 de agosto de 2011 a las 7:55
El equivalente de C++ es this
pero hay algunas diferencias.
Este es un puntero al objeto en cuestión, no una referencia; por lo tanto, debe usar operadores de desreferenciación de puntero antes de acceder a campos o métodos.
(*this).method(...)
(*this).field
o, usando la sintaxis más popular
this->method(...)
this->field
El equivalente de C++ es this
; es decir, la palabra clave es la misma.
-
no olvides la
->
eso es probablemente lo que le falta al OP.– José
1 de agosto de 2011 a las 23:22
mismo, solo porque es un puntero, usa un operador de direccionamiento indirecto diferente:
this->
– Cechner
1 de agosto de 2011 a las 23:21
esto->x = x;…………
– José
1 de agosto de 2011 a las 23:22
normalmente no necesitas
this
para la mayoría de las operaciones que acceden a los miembros. Uso explícito dethis
es bastante situacional (por ejemplo, cuando se llama a punteros a funciones de miembros).– KerrekSB
2 de agosto de 2011 a las 1:26