摘要: 在現在的標準C++中,只有一種智能指針:std::auto_ptr。其原因并非是因為auto_ptr 已足以應付所有相關的工作——實際上,auto_ptr 有一個重大的缺陷,就是它不能被用在STL 容器中——而是因為現在的C++標準在制定時并未能對智能指針進行全面的考察。按照C++標準委員會成員Herb Sutter 的說法,只有一種標準的智能指針是一件“可羞”的事情:首先,智能指針所能做的許多有用的事情,是可憐的auto_ptr 不能完成的;其次,在有些情況下使用auto_ptr 可能會造成問題,上面所說的不能在容器中使用就是一例。實際上,許多程序員已經開發了各種有用的智能指針,有些甚至在auto_ptr 被定為標準之前就已存在,但問題是,它們不是標準的。在這樣的情況下,C++標準委員會考慮引入新的智能指針,也就是自然而然的事情了。目前進入委員會視野的,主要有兩種智能指針方案:Boost 智能指針和Loki 智能指針。前者是由C++標準委員會庫工作組發起的Boost 組織開發的,而后者由世界級的C++專家Andrei Alexandrescu 開發,并在他所著的“Modern C
閱讀全文