Mediumпреобразования
Что такое неявное преобразование типов и какие опасности оно таит?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Неявное (implicit) преобразование — компилятор сам приводит типы там, где они не совпадают. Опасности: narrowing (потеря данных), неожиданные перегрузки, проблемы со signed/unsigned.
double d = 3.14;
int i = d; // narrowing: 3, потеря дроби
bool b = 42; // true (число в bool)
int x = b + 1; // 2 (bool → int: true=1)
// signed/unsigned ловушка
int si = -1;
size_t n = 5;
if (si < n) { /* НЕ выполнится: -1 → огромное unsigned */ }- Brace init запрещает narrowing,
static_castделает преобразования явными;
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.