Но когда придумывалчя C не получалось без заголовков. А в c++ перенесли что бы была определенная наследственность и легче было существующим программистам начать пользоваться новым языком
Я это понимаю. Вообще, когда С++ разрабатывался, было решено, что он должен быть обратно совместимым с С. То есть код на С - это валидный код на С++