Страницы

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

вторник, 12 февраля 2019 г.

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

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


Ответ

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

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

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