#cpp #конструктор
У меня в классе есть поле std::uint64_t m_value. В конструкторе по умолчанию я пишу в списке инициализации : m_value(0). Работаю с разными компиляторами, при этом можно в настройках проекта отрегулировать вывод предупреждений. Некоторые никак не реагируют на такую инициализацию, некоторые пишут что-то про приведение типа. Вопрос: надо ли продолжать писать так или же стоит явно прописывать приведение типа, например, : m_value((std::uint64_t)(0)), или через static_cast? Как считается лучше всего делать? Я понимаю, что неявное приведение типа, конечно же выполняется, но может имеет смысл для читающего код человека показывать, что имелось ввиду?
Ответы
Ответ 1
Нет никакого смысла использовать приведение типа. 0 - это константное выражение, можно сказать, "универсальный" литерал для скалярных и тем более арифметических типов. К тому же все статические объекты инициализируются нулем компилятором, то использование 0 в данном контексте в списке инициализации конструктора выглядит вполне естественно и не вызывает вопросов. Напротив, использование приведения типов может породить вопросы зачем это делается.Ответ 2
По-моему, дело вкуса... Если бы это был шаблон - я бы выполнял приведение к типу-параметру T, но в вашем случае ведь проще использовать литерал соответствующего типа - ну, там, 0llu...
Комментариев нет:
Отправить комментарий