С++ позволяет реализовать вещи сотней способов. Поэтому для себя или команды лучше заранее договориться что и как вы делаете.
На самом деле можно для себя можно придумать правило без всяких базовых и отдаленных реальности принципов по типу SOLID. Само по себе наследование в 90% случаев необходимо для реализации интерфейса. Остальные 10% попадают на разные фичи с++. В некоторых языках вообще наследования нет, но это не мешает быть им ООП и писать красиво.