Нередко программисты для удобства и краткости переопределяют простейшие типы данных, дают им другие имена. Чаще всего это делаетс примерно так:
typedef unsingned int uint32;
typedef signed int int32;
typedef unsigned char byte;
Ну и так далее. Выступлю с предложением: а почему бы не переопределить простейшие типы, написав для каждого типа свой класс? Расход памяти при хранении таких объектов увеличиться по идее не должен(ессно, виртуальные функции не используем). Например, пишем класс Double, примерно так:
Или например для типа char:
Таким образом, можно работать с простейшими типами как с объектами, повысить удобочитаемость кода, иметь больше контроля над тем что происходит в программе(например, для подсчета количества умножений, выполняемых над типом double достаточно поместить счетчик в перегруженный оператор).
Оверхеда по производительности/расходу памяти по идее быть не должно.
Пока не могу поделиться плюсами/минусами такого подхода, но постепенно внедряю его в свои C++ библиотеки.
typedef unsingned int uint32;
typedef signed int int32;
typedef unsigned char byte;
Ну и так далее. Выступлю с предложением: а почему бы не переопределить простейшие типы, написав для каждого типа свой класс? Расход памяти при хранении таких объектов увеличиться по идее не должен(ессно, виртуальные функции не используем). Например, пишем класс 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++ библиотеки.