Практика на перемещение в C++
Задачи строят класс с указателем на буфер в куче и конструктор перемещения, который переносит адрес и обнуляет указатель у источника.
Сделайте класс Buffer с int* data
на один элемент. Напишите конструктор
перемещения, который забирает указатель
и ставит у источника nullptr.
Постройте второй объект перемещением
из первого и выведите 1, если у источника
указатель пуст.
Сделайте Store с одним int
в new[]. После перемещения выведите
совпадение адресов буфера у нового объекта
и старого до переноса.
Передайте именованный Buffer
через std::move в функцию по значению.
Выведите элемент буфера в приемнике
и проверьте nullptr у источника.
Добавьте в Store деструктор и запретите
копирование. Переместите объект в вектор
через push_back(std::move(...))
и выведите значение из элемента вектора.
Сделайте функцию, которая по значению
возвращает локальный Buffer
с числом 42 в буфере. Присвойте
результат переменной и выведите число.
Дан класс:
class Holder {
public:
std::string text;
Holder(std::string value) : text(value) {}
};
Добавьте конструктор перемещения для
std::string через стандартный перенос.
Переместите длинную строку в новый объект
и выведите 1, если у источника
строка стала пустой.