auto_ptr复制

auto_ptr复制
     auto_ptr在退出作用域时,它所指的对象将被自动的隐式删除。
     auto_ptr具有与常规指针很不一样的复制语义:在将一个auto_ptr复制给另一个之后,原来的那个auto_ptr将不再指向任何东西。因为复制auto_ptr将导致它本身的修改,因此const auto_ptr不能被复制。
    如果指针D*能被转换到B*,模板构造函数和模板赋值都能将auto_ptr<D>转换到auto_ptr<B>。
    针对此问题,举例如下:
void g(Circle* pc)
{
   auto_ptr<Circle> p2(pc);  //现在p2负责删除
   auto_ptr<Circle> p3(p2); //现在p3负责删除,且p2不再负责
   Shape* ps = p3.Get();  //从auto_ptr抽取指针
   auto_ptr<Shape> aps(p3); //转移所有权,并转换类型,现在aps负责删除,且p3不再负责
}

你可能感兴趣的:(auto_ptr复制)