добрый день после просмотра видео где вы с помощью функций сделали новый тип ...

добрый день после просмотра видео где вы с помощью функций сделали новый тип данных(pair) у меня возник вопрос какая тогда разница между классом и функцией как типами данных 

добрый день! на самом деле с помощью демонстрируемого в уроках способа (посредством функций) можно создавать объекты, обладающие всеми основными свойствами, присущими объектам, так как это понимается по меркам ооп. при этом вы правильно подметили про инкапсуляцию - то, каким образом она организована в тех же парах, резко ограничивает в возможности каких-либо своевольных мутаций данных. можно сказать, что сама структура "сопротивляется изменениям" и настраивает (на интуитивном уровне) программиста на правильный порядок работы.
конечно, если смотреть на более низком, прикладном, уровне то различия между объектами, порождаемые разными способами, есть различия: например, классы при статической типизации не позволят использовать не существующие свойства, выдавая подробные и конкретные предупреждения, что не представляется возможной в данной реализации на функциях; так же в таких "функциональных" объектах невозможен автокомплит. хотя это прикладные и частные особенности, всё же они довольно важны.


и еще одно мне кажется или действительно так есть что инкапсуляция в типе данных(pair) созданного с помощью функций лучше и понятнее (имею в виду она практически не может быть нарушенной) чем в класе с гетерами и сетерами