Variáveis de membro de referência como membros da classe
No meu local de trabalho, vejo esse estilo ser usado extensivamente:
#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;
}
Existe um nome para descrever este idioma? Eu estou supondo que é para evitar a sobrecarga possivelmente grande de copiar um objeto grande e complexo?
Esta é geralmente uma boa prática? Há alguma armadilha para essa abordagem?