[SSM 안드로이드 프레임워크 개발 강의]14-1.스마트 포인터
#include<iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////////////
// 스마트 포인터 : 임의의 객체가 다른 타입의 포인터 처럼 사용되는것
// 장점 : 진짜 포인터가 아니라 객체이다. 생성 복사 대입 소멸 모든과정을
// 사용자가 제어 할 수 있다. 대표적인 예가 소멸자에서의 자동 삭제 기능!
//
//3. 주로 ->, * 연산자를 재정의해서 만들게 된다.
////////////////////////////////////////////////////////////////////////////
class Car
{
public:
void Go(){cout<<"car go"<<endl;}
};
//스마트 포인터 : 임의의 객체가 다른 타입의 포인터 처럼 사용되는 것.
class ptr{
Car *obj;
public:
ptr(Car *p=0):obj(p){}
Car *operator->(){return obj;}
Car& operator*() {return *obj ;}
~ptr(){delete obj;}
};
int main(){
ptr p=new Car;
p->Go(); // (p.operator->())Go() 이지만
// (p.operator->())->Go() 처럼 해석된다.
/*
Car *p = new Car;
p->Go();
delete p;
*/
}
===================================================================================