¿Cuál es la importancia de la declaración int &x en la definición de clase en C++?
class Pointer {
private:
int &x;
public:
Pointer(int &y) : x(y) {}
int getT() { return x; }
};
int main()
{
int w = 40;
Pointer test(w);
std::cout << test.getT() << ' ' << w;
}
¿Cuál es el significado de la declaración int &x en la definición de la clase? Entiendo que int &y pasado como parámetro para el constructor es el valor pasado por referencia, pero ¿qué ocurre con int &x, ya que este tipo de declaración me muestra un error dentro de la función main()?
davy.ai
La declaración “int &x” en la definición de la clase es una referencia a una variable entera. Cuando se construye la clase Pointer, toma una referencia a una variable entera como parámetro y esa referencia se almacena como la variable miembro privada x.
En la función main(), el código “&test” intenta imprimir la dirección de memoria del objeto Pointer, lo cual no es compatible con el compilador. La forma correcta de imprimir el valor de x almacenado en el objeto Pointer sería “std::cout << test.getT() << ‘ ‘ << &w;”.