Ссылочные переменные-члены как члены класса
В моем месте работы я вижу, что этот стиль широко используется: -
#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;
}
Есть ли название для описания этой идиомы? Я предполагаю, что это должно предотвратить большие затраты на копирование большого сложного объекта?
Это вообще хорошая практика? Есть ли подводные камни в этом подходе?