Variables de miembros de referencia como miembros de clase

En mi lugar de trabajo veo este estilo ampliamente utilizado: -

#include <iostream>

using namespace std;

class A
{
public:
   A(int& thing) : m_thing(thing) {}
   void printit() { cout << m_thing << endl; }

protected:
   const int& m_thing; //usually would be more complex object
};


int main(int argc, char* argv[])
{
   int myint = 5;
   A myA(myint);
   myA.printit();
   return 0;
}

¿Hay un nombre para describir este idioma? ¿Supongo que es para evitar la gran sobrecarga de copiar un objeto complejo grande?

¿Es esta generalmente una buena práctica? ¿Hay alguna trampa en este enfoque?

Respuestas a la pregunta(5)

Su respuesta a la pregunta