example2_shared_ownership.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <memory>

class Resource {
public:
    Resource() { std::cout << "Resource acquired\n"; }
    ~Resource() { std::cout << "Resource released\n"; }
    void use() { std::cout << "Resource used\n"; }
};

void useResource(std::shared_ptr<Resource> res) {
    std::cout << "Resource use count: " << res.use_count() << std::endl;
    res->use();
}

int main() {
    auto res = std::make_shared<Resource>();
    useResource(res);
    
    {
        auto res2 = res;
        useResource(res);
    }
    
    useResource(res);
    return 0;
}
Back to memory