C++ equivalente a Java esto

2 minutos de lectura

avatar de usuario de nadie
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)
{
//?
}

  • 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 de this es bastante situacional (por ejemplo, cuando se llama a punteros a funciones de miembros).

    – KerrekSB

    2 de agosto de 2011 a las 1:26

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 antes this hubiera sido una referencia.

    – MSalters

    2 de agosto de 2011 a las 7:55

El equivalente de C++ es thispero 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

¿Ha sido útil esta solución?