Что имеется в виду под непроиниченностью? Непосредственно нулевой указатель?
Нет, речь идет об уровне выше - компоненте и его дизайне. Попробую на примере:
converter = create_converter();
converter.set_source(source);
converter.set_destination(destination);
converter.run();
В данном случае дизайн компонента (converter) допускает, что его могут попросить что-то сконвертировать (вызвать run) не указав откуда и куда. В случае, если source и destination - объекты, получим обсуждаемое разыменование нулевого указателя. Мало того, в каждом методе этого компонента (если там будет что-то кроме run) - надо будет проверить (ASSERT), что source и destination не нулевые. Головная боль и писателю компонента, и пользователю.
Если переделать вот так:
converter = create_converter(source, destination);
converter.run();
То пользователю труднее ошибиться. Код проще, ошибок меньше, проверять указатели надо только один раз - в create_converter (пользователь, естественно, не имеет доступа к set_source/set_destination).
P.S. Существуют рекомендации для С++ (в том числе от самой M$) о том как полезно разносить создание объекта (конструктор) и его инициализацию (какой-нибудь Create). Архивредная "рекомендация" и антипаттерн.