Переопределение Стандартных Типов В C++

Часто для удобства и краткости программисты переопределяют простейшие типы данных и дают им другие имена.

Чаще всего это делается примерно так: typedef unsinged int uint32; typedef подписал int int32; typedef беззнаковый символьный байт; И так далее.

Позвольте мне сделать предложение: почему бы не переопределить простейшие типы, написав для каждого типа свой класс? По идее, потребление памяти при хранении таких объектов не должно увеличиваться (виртуальные функции мы, конечно, не используем).

Например, мы пишем класс Double примерно так:

 
 class Double
 {
 public:
      Double(const Double& value);
      Double          operator+(const Double &right) const;
      Double          operator-(const Double &right) const;
      Bool              IsPositiveInfinity();
      Bool              IsNegativeInfinity();
      
 private:
      double _value;
      
 }
 
Или, например, для типа char:
 
 class Char
 {
 public:
     Char(char value);
 
     Bool IsDecimalDigit() const;
     Bool IsLetter() const;
     Bool IsWhiteSpace() const;
     
     Bool operator==(const Char &other);
     Bool operator!=(const Char &other);
 
 private:
     char _value;
 };
 
Таким образом, вы сможете работать с простейшими типами как с объектами, повысить читабельность кода и иметь больший контроль над тем, что происходит в программе (например, чтобы подсчитать количество операций умножения, выполняемых над типом double, достаточно разместить счетчик в перегруженном операторе).

Теоретически не должно быть никаких накладных расходов с точки зрения производительности/потребления памяти.

Я пока не могу поделиться плюсами и минусами этого подхода, но постепенно внедряю его в свои библиотеки C++.

Теги: #c plus plus #Чулан

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