設計出乙個class像指標,但是功能更強大,分為兩種形式一種是標準庫的源**,早期的指標,多半是過載*和->,第二種是迭代器的智慧型指標
1.早期的智慧型指標
templateclass shared_ptr
t& operator->() const
shared_ptr(t* p) :px(p){}
private:
t* px;
long* pn;
''''
};struct foo
};shared_ptrsp(new foo);
foo f(*sp);
sp->method(); //等同於px->method();
f(*sp) sp代表指標,智慧型指標(*)響應返回*px
sp->method sp代表指標,智慧型指標(->)響應返回px,此時就相當於px->method(),此處的->得到的東西要繼續作用下去,所以沒有被消耗。
2.迭代器作為另外一種智慧型指標
他需要過載++、--、*、->等,
template struct _list_node;
templatestruct _list_iterator
t* pointer operator->() const
};struct foo
};list::iterator ite;
*ite; //獲得乙個foo object
ite->method(); //意思是呼叫foo::method()相當於(*ite).method() 也相當於(&(*ite))->method()
C 之智慧型指標
本文發表於1999年10月份的c c users journal,17 10 1.為什麼稱它為 自動 指標?auto ptr只是眾多可能的智慧型指標之一。許多商業庫提供了更複雜的智慧型指標,用途廣泛而令人驚異,從管理引用的數量到提供先進的 服務。可以把標準c auto ptr看作智慧型指標的ford...
C 之智慧型指標
c 中有四個智慧型指標 auto ptr,shared ptr,weak ptr,unique ptr,其中後三個是c 11支援,並且第乙個已經被c 11棄用。智慧型指標從書面意思來說,就是智慧型。主要是動態記憶體的使用很容易出問題,要在正確的時間正確釋放記憶體是很困難的。有時我們可能忘了釋放記憶體...
C 之「智慧型指標」
1.引入 要確保用 new 動態分配的記憶體空間在程式的各條執行路徑都能被釋放是一件麻煩的事情。c 11 模板庫的 標頭檔案中定義的智慧型指標,即 shared ptr 模板,就是用來部分解決這個問題的。只要將 new 運算子返回的指標 p 交給乙個 shared ptr 物件 託管 就不需要再單獨...