boost的scoped_ptr使用的第一個(gè)策略:禁止復(fù)制
:)
是不相悖,呵呵,因?yàn)槲铱吹胶竺嬷v自己實(shí)現(xiàn)成對(duì)的placement new/delete時(shí)強(qiáng)調(diào)了這由語(yǔ)言實(shí)現(xiàn)本身保證,所以順帶說(shuō)明一下。好象是item 52。
// 這一類不再聲明復(fù)制構(gòu)造器和賦值運(yùn)算符。
這句話蠻重要,呵呵
std::tr1::shared_ptr<Widget> pw(new Widget);
這一句應(yīng)該是exception-safe的,我寫了代碼測(cè)試過(guò)。
class Test
{
public:
Test() {
// Test對(duì)象內(nèi)存在調(diào)用ctor前已分配.
throw bad_alloc();
std::cout<<"Test()"<<endl;
};
~Test() { cout<<"~Test()"<<endl; };
private:
unsigned char buf[4096];
};
std::tr1::shared_ptr<Test> pTest(new Test());
不會(huì)導(dǎo)致Test對(duì)象內(nèi)存泄露.
// Perform Double-Checked Locking Optimization.
以前看代碼的時(shí)候沒(méi)注意,看你文章聽(tīng)到你重點(diǎn)提了提,偶看了看DC-Locking.pdf, 有所收獲。多謝
呵呵,是說(shuō)呢。寫得不錯(cuò),繼續(xù)努力~ 偶會(huì)一直關(guān)注~
暈S,看得頭大,建議看榮耀在c++大會(huì)上的演講PPT《C++模板元編程技術(shù)與應(yīng)用》,那個(gè)容易理解一些。
不是嚴(yán)格按照effective c++的那些item順序來(lái)翻譯的吧~
是說(shuō)怎么不對(duì)應(yīng)呢