Это упрощенный пример, иллюстрирующий вопрос:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
Итак, B отвечает за обновление части C. Я запускал код через lint, и он болтал о ссылочном элементе: lint # 1725, Это говорит о том, что нужно тщательно следить за копиями и присваиваниями по умолчанию, но по умолчанию копия и присваивание также плохо связаны с указателями, поэтому там мало преимуществ.
Я всегда стараюсь использовать ссылки, где я могу, так как голые указатели вводят несерьезно о том, кто несет ответственность за удаление этого указателя. Я предпочитаю встраивать объекты по значению, но если мне нужен указатель, я использую auto_ptr в данных элемента класса, которому принадлежит указатель, и передаю объект в качестве ссылки.
Я обычно использовал бы только указатель в данных члена, когда указатель мог бы быть нулевым или мог бы измениться. Есть ли другие причины, чтобы предпочесть ссылки на ссылки для членов данных?
Можно ли сказать, что объект, содержащий ссылку, нельзя присваивать, так как ссылка не должна быть изменена после инициализации?