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