Вступить в клуб →
средняявопросСовременный C++: move-семантика, шаблоны, лямбды

Перемещение строки в сеттере всё равно копирует данные

class Document {
public:
    void setBody(const std::string body) {
        body_ = std::move(body);
    }
private:
    std::string body_;
};

Тела документов по 5–20 МБ. Профайлер показывает memcpy внутри setBody, хотя вызывают её как doc.setBody(std::move(text)). Где лишнее копирование?

  • Из const-объекта std::move даёт копирование
  • std::move не работает с параметром функции
  • std::string не поддерживает перемещение
  • Перемещать можно только в конструкторе

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

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

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

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