5.自實現智慧指標
阿新 • • 發佈:2019-01-12
//自自實現智慧指標 ,不需delete自動釋放堆記憶體。 #include <iostream> using namespace std; class A { public: A() { cout<<"A()"<<endl; } void xxxx() { cout<<"xxxx"<<endl; } ~A() { cout<<"~A()"<<endl; } }; class SmartPtr { public: SmartPtr(A* pa) { _pa = pa; } ~SmartPtr() { delete _pa; } //讓物件 像 指標一樣使用。 #if 1 A* getAp() //-> 被 A* operator->() 代替 { return _pa; } #endif #if 1 A& getAref() //-> 被 A& operator*()代替 { return *_pa; } #endif A* operator->() { return _pa; } A& operator*() //-> { return *_pa; } private: A *_pa; }; int main() { SmartPtr sp(new A); sp.getAp()->xxxx(); sp.getAref().xxxx(); sp->xxxx();//sp.operator->() //這個有疑問,怎麼觸發->過載的 (*sp).xxxx();//sp.operator*() return 0; }