스마트 포인터

보물창고·2022년 3월 22일
0

소스코드

#include <stdio.h>

#include <iostream>
using namespace std;

class Cat
{
private : 
	int color;
public : 
	virtual ~Cat() { cout << "destr" << endl; }
	void Shout() { cout << "야옹" << endl; }
};

class Ptr
{
private  :
	Cat *p;
public : 
	~Ptr()
	{
		// 이것이 가능함.
		//(*p).Shout();
		delete p;
	}

	Ptr(Cat *Other)
	{
		p = Other;
	}

	Cat* operator->()
	{
		return p;
	}
	// 소멸자에서 호출한 것을 참고해서 만들자....
	Cat& operator*()
	{
		return *p;
	}

};


int main()
{
	Ptr p = new Cat();
	p->Shout();
	(*p).Shout();

}

스마트 포인터란 ?

: 동적 할당한 자원을 알아서 해제하는 객체를 말함.

개념을 가지고 생각을 해보면,,,
1. 하나의 클래스 안에 포인터 객체를 구성하고, 소멸자에서 해제를 하면 됨.
2. 추가적으로 포인터 객체를 사용하기 위한 연산자 오버로딩을 구현하면 됨.

  • 위의 내용을 토대로 구현해보자.

    -> 알아서 Car 자원이 해제되는 것을 확인할 수 있음.
profile
🔥🔥🔥

0개의 댓글