Вы бы использовали ссылку в качестве члена класса, когда она является неотъемлемой частью класса, без которой класс не может функционировать, и вы хотите либо разделить эту часть между несколькими классами, либо использовать ее полиморфно:
class Presenter
{
IView & view;
IModel & model;
Presenter(IView & view, IModel & model)
: view(view), model(model)
{
}
};
Ссылочный элемент не может быть изменен после построения, поэтому его использование дает строгое представление о том, как должен использоваться класс.Использование обычных или умных указателей обеспечивает большую гибкость.