Если у тебя функция не зависит ни от чего другого, и живет сама по себе - она и должна быть свободно-стоящей функцией.
А классы нужны для случаев, когда у тебя есть набор данных (состояние) и поведение, относящиеся к одной сущности.
Наглядный пример: файл. У него есть состояние - скрытые данные, например, дескриптор файла, правила чтения/записи, и т.п. вещи. И у него есть поведение - операции чтения, операции записи, закрытия и т.п.
Если эти операции оформить как функции, то им придётся передавать всё состояние файла явно, через параметры. А значит, программисту, который будет работать с файлом, придётся быть в курсе, как файл устроен внутри. Ему будет сложнее писать программу.
Если же мы обернём файл в объект, ситуация меняется. Теперь это состояние оказывается скрыто внутри объекта. Программисту достаточно иметь в своём распоряжении объект (экземпляр класса), и знать его "видимые снаружи" операции и свойства, а от внутреннего устройства он может абстрагироваться и вообще о нём не думать. Это здорово упрощает жизнь.