Mediumcasts
Почему нужно избегать C-style casts?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
C-style cast (T)x комбинирует const_cast/static_cast/reinterpret_cast в зависимости от контекста — «молчаливый» и опасный. Именованные C++-касты явны и greppable.
double d = 3.14;
const int* cp = nullptr;
// static_cast — связанные типы (int←double, upcast, void*→T*)
int i = static_cast<int>(d);
// const_cast — снять/добавить const
int* p = const_cast<int*>(cp);
// reinterpret_cast — reinterpret битового представления
auto raw = reinterpret_cast<uintptr_t>(p);
// C-style — что он делает? непонятно
// int j = (int)d;
// int* q = (int*)cp; // молча снимает const — опасноКаждый именованный cast явно выражает намерение, компилятор проверяет совместимость. C-style — только для C-interop.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.