Shared_ptr &operator=(Shared_ptr &&rhs) { Shared_ptr{std::move(rhs)}.swap(*this);return*this; }voidreset()noexcept{ Shared_ptr{}.swap(*this); }voidreset(nullptr_t)noexcept{reset(); }voidreset(T *ptr){ Shared_ptr{ptr}.swap(*this); }voidswap(Shared_ptr &rhs)noexcept{ std::swap...
拷贝构造函数assert(sp == sp2 && sp.use_count() ==2);//两个shared_ptr相等,指向同一个对象,引用计数为2*sp2 =100;//使用解引用操作符修改被指对象assert(*sp ==100);//另一个shared_ptr也同时被修改sp.reset(
1.1 shared_ptr 参考:https://zh.cppreference.com/w/cpp/memory/shared_ptr std::shared_ptr是通过指针保持对象共享所有权的智能指针。多个shared_ptr对象可占有同一对象。下列情况之一出现时销毁对象并解分配其内存: 最后剩下的占有对象的shared_ptr被销毁; 最后剩下的占有对象的shared_ptr被通过operator=或reset(...
shared_ptr p是shared_ptr p2的拷贝,唯一的区别是p将用可调用对象d来代替delete p.reset()或p.reset(q)或p.reset(q, d) 若p是唯一指向其对象的shared_ptr,reset会释放此对象。若传递了可选的参数内置指针q,会令p指向q,否则会将p置为空。若还传递了参数d,将会调用d而不是delete来释放q 不要混合使用普...
std::shared_ptr 是通过指针保持对象共享所有权的智能指针。多个 shared_ptr 对象可占有同一对象。下列情况之一出现时销毁对象并解分配其内存: 最后剩下的占有对象的 shared_ptr 被销毁; 最后剩下的占有对象的 shared_ptr 被通过 operator= 或reset() 赋值为另一指针。 用delete 表达式或在构造期间提供给 ...
reset()函数,表示重置当前存储的指针 *operator,表示返回对存储指针指向的对象的引用。它相当于:* get()。 operator->,表示返回指向存储指针所指向的对象的指针,以便访问其中一个成员。跟get函数一样的效果。 weak_ptr weak_ptr是一种用于解决shared_ptr相互引用时产生死锁问题的智能指针。如果有两个shared_ptr相互...
shared_ptr允许多个指针指向同一个变量。 unique_ptr则独占所指向的变量。 weak_ptr则指向shared_ptr所管理的变量。 2.智能指针的基础用法 1.智能指针的初始化 智能指针是基于类模板生成的,因此,要初始化一个智能指针,就必须声明指针所指向的数据类型,不然智能指针里面包含的原始指针是个空指针。
shared_ptr unique_ptr weak_ptr auto_ptr(被 C++11 弃用)Class shared_ptr 实现共享式拥有(shared ownership)概念。多个智能指针指向相同对象,该对象和其相关资源会在 “最后一个 reference 被销毁” 时被释放。为了在结构较复杂的情景中执行上述工作,标准库提供 weak_ptr、bad_weak_ptr 和 enable_shared_from_...
Class shared_ptr 实现共享式拥有(shared ownership)概念。多个智能指针指向相同对象,该对象和其相关资源会在 “最后一个 reference 被销毁” 时被释放。为了在结构较复杂的情景中执行上述工作,标准库提供 weak_ptr、bad_weak_ptr 和 enable_shared_from_this 等辅助类。 Class unique_ptr 实现独占式拥有(exclusive...
这部分会在第四章进行分析。 2.3.2、原生 C 调用 Go C 调用到 Go 这种情况比较复杂,Go 一般是便以为 c-shared/c-archive 的库给 C 调用。 代码语言:javascript 代码运行次数:0 运行 AI代码解释