自定义智能指针
使用模板类 重载 -> 操作符 重载 * 操作符 template<typename T> class MyAutoPtr{ public: MyAutoPtr(T * t){ ptr = t; } ~MyAutoPtr(){ if(ptr != NULL){ delete ptr; ptr = NULL; } } T* operator->(){ // 相当于 ptr-> , 所以返回 ptr 指针即可,将所有操作转发给真正的指针变量 return ptr; } T& operator*(){ // 相当于 (*ptr) ,所以返回 ptr 指向的对象引用即可 return *ptr; } private: T* ptr; }; class A{ public: A(int a){ cout << "A(int)..." << endl; this->a = a; } ~A(){ cout << "~A()....