공부하는 과정에서 만들어 봤던 것인데.
그냥, 아주 간단히 사용하려고 할때 혹 쓸모가 있을수도.. -..-;
서정국님 의견이 반영된 수정버전입니다.
//---------------------------------------------------------------------------
// 초간단 스마트포인트
template<class T>
class smart_ptr
{
private:
T *ptr;
public:
smart_ptr(T * p) : ptr(p) { }
~smart_ptr() { delete ptr; }
T * operator->() { return ptr; }
T & operator*() { return *ptr; }
operator T*() { return ptr; }
};
//---------------------------------------------------------------------------
// 테스트
void __fastcall TForm1::FormCreate(TObject *Sender)
{
smart_ptr<TStringList> list(new TStringList);
list->Add("하하");
list->Add("호호");
list->Add("흐흐");
list->Add("히히");
Memo1->Lines = list;
}
추가.
스마트 포인트는 단순히 포인트를 해제해 주어야하는 귀챠니즘 때문에 쓰는 것만은 아닙니다.
스마트 포인트의 장점은 예외나 예러상황에서도 상당부분 안전하게 객체를 소멸시켜 준다는데 있습니다.
|
operator T*() { return ptr; } 이런식으루요 ^^