auto ptr智慧型指標的缺點

2021-06-24 11:22:27 字數 765 閱讀 6486

1.不能用於陣列

2.支援所有權概念,當乙個auto_ptr物件被用於另乙個物件初始化或賦值時,左邊物件獲取所有權,右邊物件不在擁有所有權。

auto_prtp1(new int(1024));

auto_ptrp2(new int(2048));

p1 = p2;

p1在賦值前釋放當前指向物件的所有權,賦值後p1擁有新物件所有權,物件為2048,p2不再擁有所有權

#include

#include

using namespace std;

int main()

auto_ptrp1(newint(1024));

auto_ptrp2(newint(2048));

cout << *p1 <<'\t' << *p2 << endl;

//p1首先釋放所有權,然後p1獲取2048所有權,p2釋放所有權賦值為0

p1 = p2;

cout << *p1 <<'\t' << p2.get() << endl;

//p3獲取2048所有權,p1釋放所有權賦值為0

auto_ptrp3(p1.release());

cout << p1.get()<< '\t' << *p3 << endl;

return 0;

auto_ptr物件不能儲存在容器中,因為容器要求複製或者賦值後,兩個物件儲存相同的值

3.auto_ptr不能用於非new動態分配的物件

4.兩個auto_ptr不能指向同乙個物件

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...