目錄結構:
一 通過案例引入智慧型指標
二 智慧型指標的作用
三 設計輔助類實現智慧型指標作用
四 設計類模板實現智慧型指標作用
五 使用stl和boost提供的標準智慧型指標類模板處理問題
一 通過案例引入智慧型指標
有如下的程式:
#include
using namespace std;
class exam
exam(exam &obj)
~exam()
private:
int *ptr;
int main()
~point()
int *pin;
int count;
};class exam
exam(exam &obj)
exam &operator=(const exam &obj)
~exam()
private:
point *ptr;
int main()
smartptr(const smartptr &src):ptr(src.ptr),puse(src.puse)
smartptr &operator=(const smartptr &rhs)
t *operator->()
const t *operator->() const
t &operator*()
const t &operator*()const
~smartptr()
private:
void decruse() }
t *ptr;
size_t *puse;
int main(){/*
smartptr t1(new stub);
smartptr t2(t1);
smartptr t3(new stub);
t3 = t2;
t1->print();
(*t3).print();*/
smartptrt1(new string("mike"));
smartptrt2;
cout<<*t1庫的開發者:開發標準的實現智慧型指標的類模板
用庫中提供的智慧型指標模板類解決專案中的問題
1 使用stl提供的auto_ptr智慧型指標模板類:處理string *的情況
#include
#include
using namespace std;
int main()
{auto_ptr obj(new string(「mike」));
auto_ptr obj1;
cout<<*obj<2 使用boost庫中提供shared_ptr智慧型指標模板類處理string *的案例:
#include
#include
#include
using namespace std;
int main()
{boost::shared_ptr obj(new string(「mike」));
boost::shared_ptr obj1;
cout<<*obj
cout<<*obj1
智慧型指標和萬能指標
智慧型指標 智慧型指標 smart pointer 是儲存指向動態分配 堆 物件指標的類。除了能夠在適當的時間自動刪除指向的物件外,他們的工作機制很像c 的內建指標。智慧型指標在面對異常的時候格外有用,因為他們能夠確保正確的銷毀動態分配的物件。他們也可以用於跟蹤被多使用者共享的動態分配物件。智慧型指...
智慧型指標使用摘要
1.如果沒有拷貝 賦值等要求,優先選用scoped ptr 2.如果不需要放入容器中 放入容器中的元素型別必須是能拷貝的 優先選用scoped ptr 3.如果不需要自定義刪除器,優先選用scoped ptr 4.盡量不要用scoped array管理new出來的陣列,改用vector代替 5.只能...
C 智慧型指標使用
由於 c 語言沒有自動記憶體 機制,程式設計師每次 new 出來的記憶體都要手動 delete。程式設計師忘記 delete,流程太複雜,最終導致沒有 delete,異常導致程式過早退出,沒有執行 delete 的情況並不罕見。std auto ptr boost scoped ptr boost ...