#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; }
Комментариев нет:
Отправить комментарий