WinCNT

스마트 포인터 - unique_ptr 본문

게임 프로그래밍(학습 내용 정리)/Modern C++

스마트 포인터 - unique_ptr

WinCNT_SSS 2022. 4. 21. 14:43

unique_ptr

배타적 소유권 개념이 있는 스마트 소유권
하나의 스마트 포인터만이 특정 객체를 소유할 수 있도록, 객체에 소유권을 도입한 스마트 포인터
일반 포인터와는 달리 사용이 끝난 후에 delete 키워드를 사용하여 메모리를 해제할 필요가 없다

소유권 이전
unique_ptr 인스턴스는 move() 멤버 함수를 통해 소유권을 이전할 수는 있지만, 복사는 할 수 없다
소유권이 이전되면, 이전 u 인스턴스는 더 이상 해당 객체를 소유하지 않게 재설정된다
즉, unique_ptr에서는 =(연산자)로 값 카피가 일어나지 않는다, 이동은 가능하다(소유권 이전)
B = A 불가능
B = move(A) 가능

 

/// <summary>
/// unique_ptr 구현 예상
/// 복사 생성자를 삭제해서 값 복사가 일어나지 않도록 한다
/// </summary>
class A
{
	int a = 0;
public:
	A() {}
	A(int a) : a(a) {};
	A(const A& a) = delete;		// 복사 생성자 삭제
};