새소식

💻 Programming (프로그래밍)/C++

[C++][구현] smart pointer

  • -

C++ 에는 Java, c#, python 과 같은 garbage collector이 없습니다. (따로 라이브러리를 사용하지 않는다면요!)

 

포인터에 동적 할당을 할때, 자연스럽게 공간을 반환해줄 수 있는 smart pointer을 구현해보겠습니다.

 

#include <iostream>
using namespace std;

template <typename T>
class smartptr {
private:
	T* ptr;
public:
	smartptr(T* p = 0) : ptr(p) {}

	~smartptr() {
		delete ptr;
	}

	T& operator*() { return *ptr;}
	T& operator->() { return ptr;}
};



int main()
{
	smartptr<int> ptr = new int;

	*ptr = 4;

	cout << *ptr;
}

요렇게 자동으로 클래스가 종료될 때 delete 연산자를 통해 동적할당을 반환하는 모습을 보여줍니다.

 

이는 smartpointer은 포인터가 아니라 객체이기 때문에 생성, 복사, 대입, 소멸의 모든 과정을 사용자가 제어할 수 있습니다.

 

위의 예는 소멸자에서 자동삭제 기능입니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.