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