unique_ptr的功能基本和shared_ptr相同,也是用于管理堆内存的智能指针,但是不允许多个unique_ptr指向同一个对象。 2.2 unique_ptr使用方法 初始化 std::unique_ptr<Z> up1; std::unique_ptr<Z> up2(nullptr); std::unique_ptr<Z> up1(new Z(1)); std::unique_ptr<Z> up2(up1); // 错误,不能使...
// 创建一个 shared_ptr 并指向新建的 MyClass 对象 std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>(42); // 访问对象的方法 std::cout << "Value: " << ptr1->GetValue() << std::endl; // 创建另一个 shared_ptr,共享 ptr1 所指向的对象 std::shared_ptr<MyClass> ptr2(...
weak_ptr可以看做shared_ptr的助手,weak_ptr要和shared_ptr配套一起使用。当创建一个weak_ptr时,要用一个shared_ptr来初始化它。 我们知道,复制shared_ptr是会增加内部数据的引用计数,但是复制weak_ptr时,以及由shared_ptr构造weak_ptr时,是不会增加引用计数的;且weak_ptr没有重载*、->操作符,所以不能通过*、...
unique_ptr具有移动语义,所以我们可以使用函数f()返回的右值对q进行初始化,这样就简单地将所有权传递给...
shared_ptr: std::shared_ptr允许多个智能指针共享对同一对象的所有权,通过引用计数来跟踪对象的共享情况。 当最后一个拥有shared_ptr的实例被销毁时,关联的对象会被释放。 shared_ptr的使用相对较方便,但由于引用计数的管理,可能涉及一些性能开销。 #include<memory>std::shared_ptr<int> sharedPtr1 = std::make...
从本文内容来看,我们平常常用的是unique_ptr和shared_ptr。unique_ptr常用于简单的场景,只是让编译器帮助我们回收内存,免得一个函数很多个return处都要写delete,或者要goto到同一个位置来执行delete。 最后要提醒大家的是,如果在多线程中使用shared_ptr时,要注意用mutex来保护,shared_ptr本身并不是线程安全的。所以在...
shared_ptr可以让多个所有者共享一份资源的所有权,资源只有在没人再拥有它的时候才释放;unique_ptr只...
需要谨慎处理的情况就是,如果由于使用场景可能会引起循环依赖,则需要weak_ptr. 如参考资料2中的Person类的两个对象都有一个shared_ptr指向对方,作为自己的伙伴。或者每个学生的选课列表中有多门课程,而每门课程的学生名单中又包括多个学生的列表,如果列表的元素是shared_ptr,则会产生循环依赖,导致析构时的指针悬挂。
第一小节:介绍系列视频的大纲, 以及内容第二小节: 介绍shared_ptr 第三小节:介绍shared_ptr的两种用法,会通过代码给带大家进行演示第四个节:介绍unique_ptr 第五小节: 介绍unique_ptr的两种用法,会通过代码给带大家进行演示第六小节:怎么在面试中给面试官进行表达...