我想通过智能指针初始化两个类的实例:
std::shared_ptr< myQueue > _pA ;
std::shared_ptr< myQueue > _pB ;
_pA.reset( new myQueue() ) ;
_pB.reset( new myQueue() ) ;
我是否已使用上述重置函数初始化了两个不同的myQueues或同一对象上只有两个指针?
答案 0 :(得分:6)
假设你的myQueue类并不奇怪,是的,你将有两个独立的实例。
你可能也对make_shared
感兴趣,这可以让你这样写:
auto _pA = std::make_shared<myQueue>();
auto _pB = std::make_shared<myQueue>();
答案 1 :(得分:1)
使用指向同一对象的两个指针初始化两个shared_ptr
将导致双重删除。你不曾想要这样做。