Не знаю про моду. Знаю, что оба варианта компилятор разрешает, значит допустимо.
---
Программист С, создавая проект, делит его на процедуры.
Которые размещает по модулям. Это всё субъективный выбор,
не всегда бесспорный. Но это неповторимый стиль конкретного программиста,
имеет право.
---
Программист С++ тоже может это делать, но основная его работа - представить
проект в виде объектов, взаимодействующих между собой.
Набор объектов, их внутренняя структура - всё это тоже весьма субъективнo,
каждый дивелопер сделает по-своему исходя из навыков, опыта и личных вкусов.
Даже и спорить не буду.
---
А вот я начинал изучать С++ выполняя проект "Программатор Atmel" с 1999 года.
Как только появились жучки, программируемые "в системе".
Это идеальный полигон для начинающего С++ разработчика и + нормальный прибор
для собственных нужд.
Имеется большое количество разных объектов, иногда отличающихся
друг от друга буквально числовой константой.
Наследование показало себя с самой лучшей стороны.
Наследуем, например, жуком AT89S4051 от AT89S2051 меняя пару констант.
Таким образом, очень быстро наращиваем функционал.
Всё очень хорошо, и слово friend не используется за не надобностью.
С трудом не могу вспомнить, чтобы я где-то его вообще использовал.
Если нужен доступ, просто откроем данные класса. Или предусмотрим
в объекте процедуры для этого, проще простого. Мне френд не нужен.