独占所有权:确保同一时间只有一个 unique_ptr 实例指向同一个对象。 缺点: 不可复制:unique_ptr 不能被复制,只能通过移动语义转移所有权。 使用限制:在某些需要共享所有权的场景下,unique_ptr 不适用。 适用场景: 局部作用域内的动态内存管理:在函数内部使用 unique_ptr 管理动态分配的对象,确保对象在函数退出...
unique_ptr 是一种独占所有权的智能指针,即同一时间只能有一个 unique_ptr 指向某个对象。当 unique_ptr 被销毁时(例如超出作用域或被重置),它所指向的对象也会被自动删除。这种特性使得 unique_ptr 非常适用于管理在堆上动态分配的单个对象。二、设计自定义的unique_ptr类 在实现自定义的 unique_ptr 之前,...
unique_ptr是独占型,不能复制构造std::unique_ptr<Widget> ptr3 = std::move(ptr1);//ok,unique_ptr是个只移动类型,可以移动构造auto ptr4 = std::move(ptr3);//ok, ptr4为unique_ptr<Widget>类型//1.3 通过std::make_unique来创建auto ptr5 = std::make...
3. 重置unique_ptr对象 将释放delete关联的原始指针,并置unique_ptr对象为空。 taskPtr.reset(); 4. unique_ptr对象不可复制 //错误,不可复制std::unique_ptr<Task> taskPtr2 = taskPtr1; 5. 转移unique_ptr对象 std::unique_ptr<Task> taskPtr1(newTask(0) );//转移,转移之后,taskPtr1将变为空std...
unique_ptr表示独占所有权的智能指针,同一时间内只能有一个unique_ptr指向给定的资源。当unique_ptr离开作用域时,它所管理的资源会被自动释放。这种设计保证了资源的唯一性和确定性释放。 shared_ptr shared_ptr允许多个智能指针共享同一个资源的所有权。它通过引用计数来追踪有多少个shared_ptr指向同一资源,当最后一个...
shared_ptr<int> sp3 = make_shared<int>(2);// 通过make_shared构造,make_shared内部调用了new int(2); sp3.reset(new int(3));// 通过reset重置内部数据指针 sp3.reset();// 通过reset重置内部数据指针为空 1. 2. 3. 4. 5. 6. 注意,不能构造两个独立的智能指针,且指向同一个内部数据指针 ...
std::unique_ptr 是一个独占型的智能指针,它不允许其他的智能指针共享其内部的指针 一、初始化 (1)构造函数初始化:可以通过它的构造函数初始化一个独占智能指针对象,但是不允许通过赋值将一个 unique_ptr 赋值给另一个 unique_ptr。 //通过构造函数初始化对象unique_ptr<int> ptr1(newint(10));//error, 不...
/** * std::unique_ptr 翻译过来就是:唯一的指针, 独占所有权的智能指针,一次只能由一个 std::unique_ptr 拥有一个对象的所有权 * 所有由所有权转移的设置 * */ #include <iostream> #include <memory> class MyClass{ public: MyClass(){ std::cout<<"构造函数-触发"<<std::endl; } ~MyClass()...
std::unique_ptr, 独占所指向的对象。 std::unique_ptr 是 c++11中用来取代 std::auto_ptr 指针的指针容器。 它不能与其他unique_ptr类型的指针对象共享所指对象的内存。这种所有权仅能够通过std::move函数来转移。unique_ptr是一个删除了拷贝构造函数、保留了移动构造函数的指针封装类型。
unique_ptr是C++11中引入的智能指针之一,它用于管理动态分配的对象,可以确保在不再需要时自动释放内存,避免内存泄漏。unique_ptr使用独占所有权的方式管理资源,即同一时间只能有一个unique_ptr拥有指向该对象的指针。 构造unique_ptr<int>和int对象时,可以通过以下方式实现: ...