auto_ptr 被銷毀時會自動刪除它所指之物,所以不能讓多個auto_ptr指向同一個對象。所以,通過構造函數或者賦值操作賦值,原對象會變成NULL
tr1::shared_ptr 兩者都是在析構函數中做DELETE操作,而不是DELETE[],所以不能在array上用。
兩者都重載了operator-> / operator. 操作,經由.get()獲得資源指針
用獨立的語句將newed對象存儲于智能指針內,如果不這樣做,一旦異常被拋出,有可能導致無法察覺的資源泄露:
void test(std::tr1::shared_ptr<ClassA> classa, int priority);

std::tr1::shared_ptr<ClassA> classa;
test<classa, getPriority()>;//right

std::tr1::shared_ptr<classA>(new ClassA),getPriority());//wrong
tr1::shared_ptr 兩者都是在析構函數中做DELETE操作,而不是DELETE[],所以不能在array上用。
兩者都重載了operator-> / operator. 操作,經由.get()獲得資源指針
用獨立的語句將newed對象存儲于智能指針內,如果不這樣做,一旦異常被拋出,有可能導致無法察覺的資源泄露:





