본문 바로가기

C++

std::shared_ptr

#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