Этот вопрос немного субъективен, но я считаю, что он может привести к некоторым конструктивным ответам. Предположим, у меня есть char x;
и я хочу повысить его до интеграла, чтобы получить доступ к его числовому значению. Что мне лучше использовать и почему? static_cast<int>
или унарный арифметический оператор +
?
Мои собственные мысли о том, что с помощью static_cast<int>
является более явным и читабельным. Однако, используя унарный арифметический оператор +
короче код.
Один способ безопаснее другого?
ИМО, есть одно важное преимущество использования static_cast
, даже если он немного более многословен: он позволяет вам быстро искать в своем коде приведения через grep
или любая другая утилита для поиска текста. В больших проектах это может иметь значение, так как в противном случае приведение в стиле C часто ошибочно сопоставляется в объявлениях функций, таких как void f(double)
, где (double)
конечно не актерский состав.
Более того, static_cast
ясно дает понять ваше намерение С использованием +
Оператор может показаться экзотическим (непонятным) тому, кто не на 100% знаком с правилами целочисленных акций. С точки зрения «безопасности», afaik, оба одинаково хороши.
Связанные с: В чем разница между static_cast<> а C стиль литья?