База Hintsage

Программирование C++

Язык C++ и его модель выполнения.

Темы раздела

Выберите подраздел

Практика

Вопросы: Программирование C++

В контейнере хранится набор объектов с единственным владельцем. Определите, что произойдёт с владением ресурсами после перемещения контейнера:

#include <memory>
#include <vector>

int main() {
    std::vector<std::unique_ptr<int>> source;
    source.push_back(std::make_unique<int>(42));

    auto target = std::move(source);
}

Кому принадлежат объекты после этой операции и что гарантируется о состоянии source?

Рассмотрите создание владельца из сырого указателя. Предположим, что после успешного new выделение control block для std::shared_ptr завершается исключением. Кто освободит объект?

#include <memory>

struct Deleter {
    void operator()(int* p) const noexcept {
        delete p;
    }
};

void create() {
    std::shared_ptr<int> value(new int(42), Deleter{});
}

Показано 201220 из 300