#include<iostream>
using namespace std;
/*
class Car{
int mCount;
public :
Car() : mCount(0){}
void incStrong(){--mCount;}
void decStrong(){
if(--mCount ==0)delete this;
}
~Car(){cout<<"Car 파괴 "<<endl;}
};
*/
////////////////////////////////////////////////////////////////////////////////////////
/// 안드로이드 프레임웤에서는 모든 클래스가 RefBase 클래스를 상속받아 사용되게 되어있다.
////////////////////////////////////////////////////////////////////////////////////////
class RefBase{
int mCount;
public :
RefBase() : mCount(0){}
void incStrong(){++mCount;}
void decStrong(){
if(--mCount ==0)delete this;
}
virtual ~RefBase(){cout<<"Red 파괴 "<<endl;}
};
class Car : public RefBase{
}
template<typename T> class sp
{
T * m_ptr;
public:
sp(T *other =0):m_ptr(other) {if(m_ptr)m_ptr->incStrong();}
sp(const sp &p):m_ptr(p.m_ptr) {if(m_ptr)m_ptr->incStrong();}
~sp() {if(m_ptr)m_ptr->decStrong();}
T *operator->(){return m_ptr;}
t& operator *(){return *m_ptr;}
}
int main(){
sp<Car> p1 = new Car;
sp<Car> p2=p1;
/*
Car *p1 = new Car;
p1->incStrong(); //객체 생성후 무조껀 1을 증가하자
Car *p2 = p1;
p2->incStrong(); //복사후 1을 증가하자
p1->decStrong(); //3. 모든 포인터는 사용후 1감소하자.
p2->incStrong();
*/
}
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발 강의]16. STL 과 함수객체 (0) | 2012.08.14 |
---|---|
[SSM 안드로이드 프레임워크 개발 강의]15. STL find, strchr 구현하기 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발강의]14-2 스마트포인터의 얕은복사 해결과 템플릿 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]14-1.스마트 포인터 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]13.연산자 재정의와 테크닉 (0) | 2012.08.14 |