unique_ptr shared ptr make_prt
时间: 2023-08-07 17:06:30 浏览: 110
unique_ptr和shared_ptr是C++中的智能指针类型。unique_ptr是一种独占所有权的智能指针,它不允许复制和共享内部的指针。例如,我们可以使用unique_ptr来管理一个动态分配的数组,如下所示:unique_ptr<A[]> ptr1(new A
而shared_ptr是一种允许多个智能指针共享同一个对象所有权的智能指针。例如,我们可以使用shared_ptr来管理一个动态分配的数组,如下所示:shared_ptr<A[]> ptr2(new A
然而,unique_ptr不允许复制,也不允许其他智能指针共享其内部的指针。这意味着我们不能将一个unique_ptr赋值给另一个unique_ptr,但可以使用move函数将其转移给另一个unique_ptr,如下所示:unique_ptr<int> ptr(new int); // unique_ptr<int> ptr2=ptr; 错误,不能赋值 unique_ptr<int> ptr3=move(ptr); //用move进行转移 assert(ptr!=nullptr); //转移后ptr为nullptr [2
另外,还有一种智能指针类型叫做weak_ptr,它通常与shared_ptr类型指针配合使用。weak_ptr类似于shared_ptr的辅助工具,通过weak_ptr,我们可以获取shared_ptr指针的一些状态信息,但不会增加对象的引用计数。 [3
make_shared是C++标准库提供的函数模板,用于创建一个动态分配的对象,并返回对应的shared_ptr指针。例如,我们可以使用make_shared来创建一个int类型的对象,并将其返回给一个shared_ptr指针,如下所示:shared_ptr<int> ptr = make_shared<int>(42);
阅读全文