學習智慧型指標Auto ptr

2021-09-02 14:57:49 字數 722 閱讀 7098

剛接觸智慧型指標,先寫下來以免忘記,可能會有解釋不正確的地方

using namespace std;

#include//智慧型指標都是棧上的物件

templateclass autoptr

autoptr(autoptr& ap) //拷貝構造,類x的拷貝建構函式的形式為x(x& y),顯示呼叫,否則系統預設生成拷貝建構函式(淺拷貝)

autoptr& operator=(autoptr& ap) //運算子過載 ,拷貝建構函式功能與賦值函式功能相同,模板+指標運算子過載構成智慧型指標

return *this; //如果是自己給自己賦值返回*this

} t* operator->() //過載 ->指標運算子

t operator*() //過載* 解引用運算子

~autoptr() //析構函式-釋放資源

void reset(t* ptr=0) //重置auto_ptr物件,如不重置,則傳遞0值,

//釋放原來指向的那塊動態分配的空間

_ptr = ptr;

} public:

t* _ptr; //指標,指向動態分配的記憶體

}; int main()

auto ptr智慧型指標

1 class auto ptr 這個智慧型指標應該保證,無論在何種情形下,只要自己被摧毀,就一定連帶釋放其所指資源。而由於智慧型指標本身就是區域變數,所以無論是正常退出,還是異常退出,只要函式退出,它就一定會被銷毀。注意 auto ptr不允許使用一般指標慣用的賦值 assign 初始化方式。必須...

智慧型指標 AutoPtr

include include include using namespace std void func autoptr 析構函式來負責釋放 void test catch exception e autoptr 析構函式來負責釋放 private t ptr struct aa void fun...

stl智慧型指標auto ptr

感覺auto ptr還是存在一些不足的,效率十分低,而且丟失了一般指標方便常用的操作,如 等,auto ptr只過載了 這幾個操作符,所以使用很不方便。一 說明 int a null delete a do nothing 應此auto ptr的析構函式是這樣子的 auto ptr 二 auto p...