使用shared_ptr的RAII

时间:2013-12-09 16:14:35

标签: c++ shared-ptr raii

我想通过智能指针初始化两个类的实例:

    std::shared_ptr< myQueue > _pA ;
    std::shared_ptr< myQueue > _pB ;

    _pA.reset( new myQueue() ) ;
    _pB.reset( new myQueue() ) ;

我是否已使用上述重置函数初始化了两个不同的myQueues或同一对象上只有两个指针?

2 个答案:

答案 0 :(得分:6)

假设你的myQueue类并不奇怪,是的,你将有两个独立的实例。

你可能也对make_shared感兴趣,这可以让你这样写:

auto _pA = std::make_shared<myQueue>();
auto _pB = std::make_shared<myQueue>();

答案 1 :(得分:1)

使用指向同一对象的两个指针初始化两个shared_ptr将导致双重删除。你不想要这样做。