Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Приведение типа в списках инициализации, как лучше?

#cpp #конструктор


У меня в классе есть поле std::uint64_t m_value. В конструкторе по умолчанию я пишу
в списке инициализации : m_value(0). Работаю с разными компиляторами, при этом можно
в настройках проекта отрегулировать вывод предупреждений. Некоторые никак не реагируют
на такую инициализацию, некоторые пишут что-то про приведение типа.

Вопрос: надо ли продолжать писать так или же стоит явно прописывать приведение типа,
например, : m_value((std::uint64_t)(0)), или через static_cast? Как считается лучше
всего делать? Я понимаю, что неявное приведение типа, конечно же выполняется, но может
имеет смысл для читающего код человека показывать, что имелось ввиду?
    


Ответы

Ответ 1



Нет никакого смысла использовать приведение типа. 0 - это константное выражение, можно сказать, "универсальный" литерал для скалярных и тем более арифметических типов. К тому же все статические объекты инициализируются нулем компилятором, то использование 0 в данном контексте в списке инициализации конструктора выглядит вполне естественно и не вызывает вопросов. Напротив, использование приведения типов может породить вопросы зачем это делается.

Ответ 2



По-моему, дело вкуса... Если бы это был шаблон - я бы выполнял приведение к типу-параметру T, но в вашем случае ведь проще использовать литерал соответствующего типа - ну, там, 0llu...

Комментариев нет:

Отправить комментарий