Referenzelementvariablen als Klassenelemente

An meinem Arbeitsplatz sehe ich diesen Stil ausgiebig verwendet: -

#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;
}

Gibt es einen Namen, der diese Redewendung beschreibt? Ich gehe davon aus, dass es den möglicherweise großen Aufwand beim Kopieren eines großen komplexen Objekts verhindern soll?

Ist das im Allgemeinen eine gute Praxis? Gibt es irgendwelche Fallstricke bei diesem Ansatz?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage