#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;
*/
}
===================================================================================
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발 강의]14-3.실제로 안드로이드 프레임웤에서 사용되는 스마트 포인터 (0) | 2012.08.14 |
---|---|
[SSM 안드로이드 프레임워크 개발강의]14-2 스마트포인터의 얕은복사 해결과 템플릿 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]13.연산자 재정의와 테크닉 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]12-1 얕은 복사의 4가지 기법 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]12. 복사생성자 (0) | 2012.08.14 |