1. 基本用法 #include <memory> #include <iostream> void example() { // 创建一个 unique_ptr 管理动态分配的 int 对象 std::unique_ptr<int> ptr(new int(10)); // 使用智能指针 std::cout << *ptr << std::endl; // 输出: 10 // 不需要手动释放内存,ptr 超出作用域时自动释放 } 2. ...
std::unique_ptr 是一个模板类,它提供了对动态分配对象的独占所有权(即没有其他智能指针可以同时拥有同一个对象的所有权)。当 std::unique_ptr 被销毁时,它所指向的对象也会被自动删除。 std::make_unique 的典型用法如下所示: auto my_unique_ptr = std::make_unique<MyClass>(constructor_arguments...)...
此时使用std::unique_ptr来管理动态内存,只要std::unique_ptr指针创建成功,其析构函数都会被调用,确保动态资源被释放。 #include<memory>#include<iostream>usingnamespacestd;classFunc{};intmain(){unique_ptr<Func>upFunc(newFunc);//...return0; } 容器内保存指针示例: std::vector<std::unique_ptr<int>...
指向一个 int 对象 std::unique_ptr<int> ptr(new int(42)); // 使用 unique_ptr 操作指向的对象 std::cout << "Value: " << *ptr << std::endl; // unique_ptr 在生命周期结束时会自动释放内存 return 0;} 3. 构造
// 1.创建一个指向整型对象的unique_ptr,默认使用delete运算符释放资源 std::unique_ptr<int> uptr(new int(10)); // 2.C++ 14 使用 std::make_unique std::unique_ptr<int> uptr = std::make_unique<int>(10); std::unique_ptr<MyClass> uptr = std::make_unique<MyClass>(); ...
std::unique_ptr std::unique_ptr 是一种独占的语义,即只允许一个智能指针引用裸指针,这区别于 std::shared_ptr 允许多个 shared_ptr 引用同一个裸指针,它没有引用计数,它的性能比 shared_ptr 会...
和std::auto_ptr一样,std::unique_ptr也是一种智能指针,它也是通过指针的方式来管理对象资源,并且在 unique_ptr 的生命期结束后释放该资源。 unique_ptr 持有对对象的独有权 —— 两个 unique_ptr 不能指向一个对象,...
unique_ptr 可以进行 move 操作, move 操作会移交管理资源的所有权 // 通过 move 操作, 移交所有权, 移交后, u_p1 不再管理资源std::unique_ptr<Test>u_p1;std::unique_ptr<Test>u_p2=std::move(u_p1); 3.4 copy 操作不合法 unique_ptr 不可以进行 copy 操作, copy 操作会破坏管理资源的所有权唯一...
std::unique_ptr是c++11起引入的智能指针,为什么必须要在c++11起才有该特性,主要还是c++11增加了move语义,否则无法对对象的所有权进行传递。 2 示例代码 #include <memory> #include <iostream> #include <utility> class Foo{ public: Foo() = default; Foo(int a):_a(a) {} ~Foo() {} int get_a...
1. std::unique_ptr std::unique_ptr代表一个拥有唯一所有权的指针,同一时间只能有一个std::unique_ptr实例拥有对象。 #include <iostream> #include <memory> class MyClass { kunpengji.com/jh74sa/ jilinhaoyuan.com/jh74sa/ pukegame.com/jh74sa/ ...