// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
//---------------------定义------------------------------
#define MY_AUTO_PTR MyDefine::AutoPtr
namespace MyDefine{
template <class T>
class AutoPtr{
public:
AutoPtr(T* ptr){
this->ptr = ptr;
}
~AutoPtr(){
if(this->ptr != NULL){
delete this->ptr;
this->ptr = NULL;
}
}
T* &operator->(){
return this->ptr;
}
private:
T *ptr;
};
};
//--------------------------测试类----------------------------------------
class Test{
public:
Test(){
cout<<"in Test"<<endl;
}
~Test(){
cout<<"in ~Test"<<endl;
}
void print(){
cout<<"test print"<<endl;
}
};
class Test2{
public:
Test2(){
cout<<"in Test2"<<endl;
}
~Test2(){
cout<<"in ~Test2"<<endl;
}
void print2(){
cout<<"test print2"<<endl;
}
};
//------------------------使用-------------------------
void test(){
MY_AUTO_PTR<Test> testObj(new Test());
testObj->print();
MY_AUTO_PTR<Test2> testObj2(new Test2());
testObj2->print2();
}
int _tmain(int argc, _TCHAR* argv[])
{
test();
getchar();
return 0;
}