Ссылочные переменные-члены как члены класса

В моем месте работы я вижу, что этот стиль широко используется: -

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

Есть ли название для описания этой идиомы? Я предполагаю, что это должно предотвратить большие затраты на копирование большого сложного объекта?

Это вообще хорошая практика? Есть ли подводные камни в этом подходе?

Ответы на вопрос(5)

Ваш ответ на вопрос