Создание базового класса другом дает базовому классу доступ к закрытым членам производного класса. Трудно сказать, в чем причина этого, не видя определения class Base
. Кажется, что комментарий указывает, что базовый класс имеет функции-члены для создания объектов производных классов.
Вообще, это плохой дизайн. Плохо, когда базовый класс вообще знает о своих производных классах, и еще хуже, когда у него есть доступ к закрытым членам производных классов. Зависимости должны идти только одним путем: производные классы зависят от базового класса, а не наоборот. Другими словами, изменение в производном классе не должно нарушать базовый класс.
Если вам нужна фабрика, правильный способ сделать это - поместить логику создания в отдельный класс фабрики, а не вбазовый класс.