1)問題引入:
在java或者在C++中,一旦你new一個東西,那么必然有一個delete與之對應,比如:
1 int main() 2 { 3 int* p= new int(); 4 5 *p=10; 6 7 delete p; 8 9 10 return 0; 11 }
但是 ?我現在有一個 ?特別 ?特別智能的指針 ? ---名字叫 ?智能指針 ?可以 ?不用我們手動釋放 ?去自己釋放,那么怎么創建和使用這個智能指針呢?
?
其實這個智能指針就類似于 ?JAVA的 ?new原理,也是你只要創建了,就可以用,但是回收 你不用管。
?
2)智能指針的創建和使用
(1)智能指針存在頭文件 ?<mrmary> ?中
(2)創建和使用:
1 #include<iostream> 2 #include<memory> 3 using namespace std; 4 int main() 5 { 6 //等同于 int *p= new int(); 7 auto_ptr<int> pt(new int); 8 //這個pt后面括號里面的是 返回一個地址的東西 new int 返回一個地址 給了pt 9 //那個尖括號< > 里面的是 這個pt指針的數據類型 你是int 就是<int> 你是char 10 //就是 <char> 你是類A 就是 <A> 11 12 13 //比如 和 A a= new A(10)類似的代碼是: 14 15 // auto_ptr<A> pt(new A(10)); 16 *pt=10; 17 cout<<*pt<<endl; 18 19 20 }
?