作者khoguan (Khoguan Phuann)
看板C_and_CPP
標題Re: [請益] 請問一個句子
時間Thu Jun 2 23:51:30 2005
※ 引述《aecho (星空下的鮪魚)》之銘言:
: ※ 引述《Uihc ()》之銘言:
: ※ 引述《aecho (星空下的鮪魚)》之銘言:
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 就是不懂這裡的參數想傳達的意思=.=
: 整理了一下,其實這篇文章講的很仔細吧。同樣是void funcA(void),
: 用了auto_ptr可以避免很多memory的問題。而在使用上,卻跟MyClass *ptr =
: new MyClass是一樣的。所以上面那段跟
: void Swap(Graphics::TBitmap& new_bitmap) 應該近似,只不過上面的new_bitmap
: 是Class auto_ptr的。在memory的控管上有多一層保護吧。
使用 auto_ptr 有很多要小心的事項。
它的 assign 和一般的 assign 意思不一樣。若是在 class 中
使用了 auto_ptr 做為 data member, 那這個 class 的 copy ctor,
copy assignment operator 都不能用自動產生的版本,不然會
很危險。
除了不支援 array 的使用,它也不能放到 standard container
class 中。像是
vector<auto_ptr<int> >; // 會有嚴重後果!
Boost library 提供了一些更聰明好用的 smart pointer, 但尚未
成為標準就是。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.208.168
→ khoguan:vector<shared_ptr<int> > 就沒問題了,boost提供220.130.208.168 06/03
→ aecho:boost的是要自己去抓嗎? 還是...是一種標準? 218.166.91.181 06/04
→ khoguan:就去 www.boost.org dl/build/install220.130.208.168 06/04
推 aecho:是不是有打錯,我連不進去 @@ 218.166.94.69 06/04
推 khoguan:www.boost.org 啦 ^_^220.130.208.168 06/04
→ khoguan:後面的英文是指下載建置安裝,不是網址的一部份220.130.208.168 06/04