#cpp #cpp11 #переменные #cpp14 #преобразование_типов
Подскажите, как современный стиль программирования на C++ рекомендует использовать единицы измерения при указания значений переменных? Мне совершенно не нравится использование #define, поскольку очень часто теряется смысловая нагрузка таких переменных, не видная привязка к конкретному классу (где это может быть использовано), да и просто не очень эстетично #define _KBps 1024.0 Поэтому я использую статические константы. Например для класса, который работает с объектами в секунду и пользователь [кода] может указать определённые границы, я делаю так: class CMyClass { public: static const double m_Ops; static const double m_KOps; static const double m_MOps; // основная начинка класса }; const double CMyClass::m_Ops = 1; const double CMyClass::m_KOps = 1000.0; const double CMyClass::m_MOps = 1000000.0; CMyClass(2.0 * CMyClass::m_KOps, 1.34 * CMyClass::m_MOps); Что уже (на мой скромный взгляд) более наглядно и удобно. Но наверное С++1x в этом отношении шагнули дальше и можно указывать CMyClass(2.0KOps, 1.34MOps); ? Так ли это (вроде что-то подобное видел)? И вообще какой подход предпочтителен?
Ответы
Ответ 1
См. п. 13.5.8 стандарта - литералы, определенные пользователем. Вот простейший пример: long double operator ""_MOps(long double x) { return x*1e6; } auto main() -> int { cout << 2.0_MOps << endl; }
Комментариев нет:
Отправить комментарий