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...
在unique_ptr对象上调用release()将释放其关联的原始指针的所有权,并返回原始指针。这里是释放所有权,并没有delete原始指针,reset()才会delete原始指针。 Task* pTask = taskPtr.release(); 错误用法 std::unique_ptr<Task> taskPtr =newTask(0); C++ 智能指针 unique_ptr 详解与示例_彼此当年少,莫负好时光-...
从名字上看,weak_ptr是弱指针,即它比shared_ptr要弱一点。weak_ptr可以看做shared_ptr的助手,weak_ptr要和shared_ptr配套一起使用。当创建一个weak_ptr时,要用一个shared_ptr来初始化它。 我们知道,复制shared_ptr是会增加内部数据的引用计数,但是复制weak_ptr时,以及由shared_ptr构造weak_ptr时,是不会增加引...
创建unique_ptr对象:可以使用std::make_unique函数创建一个unique_ptr对象,并将其指向一个动态分配的对象。 std::unique_ptr<int> ptr = std::make_unique<int>(10); 复制代码 访问unique_ptr指向的对象:可以使用箭头运算符或*运算符来访问unique_ptr指向的对象。 std::cout << *ptr << std::endl; 复制...
unique_ptr的用法如下: 1.创建unique_ptr对象: 可以通过new运算符或make_unique函数创建unique_ptr对象,如下所示: ``` std::unique_ptr<int> ptr1(new int(10)); auto ptr2 = std::make_unique<int>(20); ``` 2.访问指针所指向的对象: 可以使用*运算符或get函数访问指针所指向的对象,如下所示: `...
基本用法 //1 创建 int main() { // 创建一个 shared_ptr 并指向新建的 MyClass 对象 std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>(42); // 访问对象的方法 std::cout << "Value: " << ptr1->GetValue() << std::endl; ...
unique_ptr的使用方法很简单,首先需要包含头文件<memory>,然后使用std::unique_ptr<T>来定义一个unique_ptr对象,其中T是指向的类型。例如,可以定义一个指向int类型的unique_ptr对象如下: std::unique_ptr<int> ptr(new int); 这个语句中,new int会返回一个指向int类型的动态分配内存的指针,并将它传递给unique_...
unique_ptr<Object> uPtr2{move(uPtr1)}; cout<<uPtr1.get()<<endl; cout<<uPtr2.get()<<endl; { unique_ptr<Object> uLocalPtr{new Object("Local Object")}; } cout<<"\n"; uPtr2.reset(new Object("New Object")); Object* ObPtr = uPtr2.release(); //返回对象并释放 delete ObPtr;...
1. unique_ptr的构造函数可以接受原始指针或者一个std::nullptr_t类型的值作为参数,用于初始化它所管理的对象。 2. unique_ptr的get()函数可以用于获取它所管理的原始指针。 3. unique_ptr的reset()函数可以释放它所管理的对象,并重新指向一个新的对象。 4. unique_ptr的release()函数可以释放它所管理的对象,...
std::unique_ptr的用法 构造一个std::unique_ptr: autocustom_deleter=[](int*arg){printf("I am custom deleter.\n");deletearg;}std::unique_ptr<int,decltype(custom_deleter)>upw1(newint(1),custom_deleter);std::unique_ptr<int,decltype(custom_deleter)>upw2(nullptr,custom_deleter);std::unique...