Максимальная Перегрузка — Приключения Javascript В Мире C++

Как правильно расширить возможности языка программирования с помощью перегрузки операторов.

Создателей и сопровождающих языков программирования часто просят добавить в язык новые возможности.

Самый распространенный ответ, который можно от них услышать: «Почему, ведь то, что вы предлагаете, можно сделать, используя доступные средства языка».

Перегрузка операторов появилась в C++ по просьбе физиков и математиков, которые хотели удобно работать с самодельными типами данных, большими числами и матрицами.

Хотя физикам и математикам эта возможность нравилась, программистам, в том числе создателям C++, перегрузка операторов никогда не нравилась.

Дело слишком сложное, много неясностей, поэтому перегрузку операторов считают чем-то вредным и применяют в редких случаях.

Сегодня я попытаюсь показать, почему это так сложно и как правильно использовать перегрузку на примере создания одного нового типа под названием var, поведение которого будет максимально приближено к аналогичному типу в JavaScript. То есть мы попытаемся создать класс, который сможет содержать число, строку, массив или объект. Тип, который можно инициализировать языковыми литералами.

Тип, который правильно преобразуется там, где это необходимо.

Сначала объявим сам класс:

  
   

struct var { };

(Почему структура, а не класс? Единственная разница между ними в том, что в структуре по умолчанию все члены являются открытыми.

Для упрощения чтения кода это будет структура.

) Давайте попробуем поместить числовое значение и строковое значение в var:

struct var {

Теги: #C++ #JavaScript #программирование

Вместе с данным постом часто просматривают: