Mediumтипы
Чем std::byte отличается от char и unsigned char?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`std::byte` (C++17) — тип, представляющий «сырые байты» без арифметики и символьной семантики. char/unsigned char исторически перегружены: и символ, и наименьшая адресуемая единица памяти, и «байт» для memcpy.
#include <cstddef>
std::byte b{0xFF};
b = b << 2; // OK: битовые операции
// b = b + 1; // ОШИБКА: арифметики нет
// int i = b; // ОШИБКА: нет неявного приведения
int i = std::to_integer<int>(b); // явно- Нет неявных преобразований в
int, нет арифметики (+/-), только битовые (<<,>>,&,|,^); - Для буферов, сериализации, raw memory —
std::byteправильнее; для текста —char.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.