используйте static_cast в качестве ответов на строгу. Я рекомендую не использовать неявный листинг (или даже C-стиль в исходном коде на С++) по нескольким причинам:
Неявные броски являются распространенным источником предупреждений компилятора, что означает, что вы можете добавлять шум в сборку (либо сейчас, либо позже, когда добавляются новые предупреждающие флаги).
Следующий программный программист позади вас увидит неявный бросок и должен знать, было ли это преднамеренное поведение или ошибка/ошибка. Наличие этого static_cast делает ваше намерение незамедлительным.
static_cast, а остальные С++-стили легко обрабатывать grep.
Ответ 2
Вы должны использовать static_cast или полагаться только на неявный листинг:
int64_t a = 1234;
double d = static_cast<double>(a);
double f = a;
Ответ 3
Для типов POD обе версии выполняют одно и то же. Выберите тот, который вы предпочитаете, и будьте последовательны.
Я знаю многих людей, которые предпочитают первое для ввода/чтения, и я склонен согласиться с этим, но я тоже могу жить.
Я много раз слышал аргумент "easy to grep for", но до сих пор не сталкивался с ситуацией, когда мне нужно было выполнить grep мою кодовую базу для трансляции POD.
Ответ 4
Вы также можете использовать синтаксис преобразования, который эквивалентен static_cast:
int64_t a = 1234;
double d = double(a);
Это полезная синтаксическая конструкция в том смысле, что она позволяет обрабатывать примитивные типы и типы классов одинаково в шаблоне, либо делая static_cast для примитива, либо вызывая конструктор для типа класса.