shared_ptr 的赋值可以通过以下两种方式实现: 使用赋值运算符 =: cpp std::shared_ptr<int> ptr1 = std::make_shared<int>(5); std::shared_ptr<int> ptr2 = ptr1; // 使用赋值运算符将 ptr1 赋值给 ptr2 使用reset() 函数: cpp st
shared_ptr赋值方式 shared_ptr赋值方式 在C++中,可以使用`std::shared_ptr`来管理动态分配的内存,并通过多个 `shared_ptr`共享相同的资源。共享智能指针的赋值方式包括以下几种:1.直接赋值:将一个`shared_ptr`赋值给另一个`shared_ptr`,这将使它们共享相同的资源。当没有任何其他`shared_ptr`引用该资源时...
std::shared\_ptr<int> socketPtr(new int(socketFd), myClose);// ... 其他代码 ...return 0;} ```在上述示例中,我们创建了一个shared_ptr来管理socketFd,并通过指定自定义删除器myClose来确保在适当的时候关闭socket。这样,即使shared_ptr被销毁,其管理的资源也会被正确地释放。
1) 复制:shared_ptr& operator= (const shared_ptr& x) noexcept; template <class U> shared_ptr& operator= (const shared_ptr<U>& x) noexcept; 2) 移动:shared_ptr& operator= (shared_ptr&& x) noexcept; template <class U> shared_ptr& operator= (shared_ptr<U>&& x) noexcept; 3) 从.....
1));//方式3 reset,如果原有的shared_ptr不为空,会使原对象的引用计数减1std::shared_ptr<int> p4 = std::make_shared<int>( 2);//方式4 一般来说std::make_shared是最推荐的一种写法。 增加计数 被引用则会增加计数 std::shared_ptr<int>ptr2(sp2);//再次被引用则计数+1 ...
当进行拷贝或赋值操作时,每个shared_ptr都会纪录有多少个其他shared_ptr指向相同的对象: 1 2 autop = make_shared<int>(50);//p指向的对象只有p一个引用者 autoq = p;//p和q指向相同对象,此对象有两个引用者; 智能指针类能记录有多少个shared_ptr指向相同的对象,并能在恰当的时候自动释放对象!
shared_ptr析构函数,对引用计数减一。如果计数为零,则保存的指针被删除。删除指针的方法是调用operator delete,或者,如果给定了一个执行删除操作的删除器对象,就把保存的指针作为唯一参数调用这个对象。析构函数不会抛出异常。 shared_ptr& operator=(const shared_ptr& r); 赋值操作共享r中的资源,并停止对原有...
使用reset()时,传递给reset的参数不必是托管对象(也不能是);而使用=时,右侧必须是托管对象。
unique_ptr:unique_ptr是一种独占式智能指针,它拥有对其所指向对象的唯一所有权。同一时间只能有一个unique_ptr指向一个对象,当unique_ptr被销毁时,它所指向的对象也会被销毁。由于unique_ptr不支持拷贝构造和赋值操作,只能通过移动语义来转移所有权,这保证了对象的唯一性,也提高了代码的安全性。例如: ...