#include<iostream>
#include<memory>
class A
{
public:
int n;
A(int n)
{
this->n = n;
std::cout << "Constructor " << n << std::endl;
}
~A()
{
std::cout << "Destructor " << n << std::endl;
}
};
int main()
{
auto ptr = std::make_shared<A>(5);
if (ptr.unique()) {
std::cout << "ptr is unique" << std::endl;
}
else {
std::cout << "ptr is shared" << std::endl;
}
auto ptr1 = ptr;
auto ptr2 = ptr1;
std::cout << "Shared count: " << ptr2.use_count() << std::endl;
if (ptr.unique()) {
std::cout << "ptr is unique" << std::endl;
}
else {
std::cout << "ptr is shared" << std::endl;
}
ptr = NULL;
ptr1 = NULL;
{
auto ptr3 = std::make_shared<A>(7);
ptr = ptr3;
}
std::cout << ptr2->n << std::endl;
return 0;
}
출력
Constructor 5
ptr is unique
Shared count: 3
ptr is shared
Constructor 7
5
Destructor 5
Destructor 7
'C++' 카테고리의 다른 글
가변인자 템플릿 (0) | 2021.10.27 |
---|---|
std::filesystem (0) | 2021.10.27 |
std::unique_ptr (0) | 2021.10.27 |
std::find() (0) | 2021.10.27 |
Lvalue & Rvalue (0) | 2021.10.21 |