Вступить в клуб →
лёгкаявопросООП, исключения и дизайн классов

Вызов write(42) неожиданно компилируется и пишет пустой буфер

class Buffer {
public:
    Buffer(size_t capacity);            // выделяет capacity байт
    Buffer(const char* data, size_t n);
};

void write(const Buffer& b);

write(42);   // автор хотел записать число 42

Код компилируется, в файл уходит 42 нулевых байта. Как запретить такие вызовы?

  • Пометить конструктор от size_t как explicit
  • Принимать Buffer в write по значению
  • Удалить конструктор копирования Buffer
  • Сделать size_t параметр вторым, а не первым

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела