EFFECTIVE资源管理13

EFFECTIVE资源管理13
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

你可能感兴趣的:(EFFECTIVE资源管理13)