RAII with shared_ptr

387 views Asked by At

I want to initialize two instances of a classes through smart pointers:

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

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

Do I have initialized with the above reset function two different myQueues or just two pointers on the same object?

2

There are 2 answers

4
kenm On BEST ANSWER

Assuming your myQueue class isn't weird, yes, you will have two separate instances.

You might also be interested in make_shared, which would let you write it like this:

auto _pA = std::make_shared<myQueue>();
auto _pB = std::make_shared<myQueue>();
0
James Kanze On

Initializing the two shared_ptr with two pointers to the same object will result in a double delete. You don't ever want to do it.