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...
同时UniquePtr无法进行拷贝,保证了UniquePtr对资源所有权的独占性,而通过std::move() 以及移动构造/赋值函数,UniquePtr能够将对资源的所有权转移给其他UniquePtr对象。基本简易得实现了一个std::unique_ptr智能指针。 3 shared_ptr 思想 shared_ptr作为另一个常用的智能指针,它和unique_ptr智能指针的理念有着很大...
unique_ptr独享它指向的对象,也就是说,同时只有一个unique_ptr指向同一个对象,当这个unique_ptr被销毁时,指向的对象也随即被销毁。 实现代码(重要部分) 第一个模板参数T:指针指向的数据类型。 第二个模板参数D:指定删除器,缺省用delete释放资源。#include <memory> ...
unique_ptr 智能指针是以模板类的形式提供的,unique_ptr<T>(T 为指针所指数据的类型)定义在<memory>头文件,并位于 std 命名空间中。因此,要想使用 unique_ptr 类型指针,程序中应首先包含如下 2 条语句: #include <memory> using namespace std; 1. 2. 第2 句并不是必须的,可以不添加,则后续在使用 uniqu...
《现代C++编程入门》第33集:智能指针智能唯一指针unique_ptr的声明初始化及简单使用。——《刚哥伴读会》对现代C++编程感兴趣的朋友,欢迎加入我的伴读会。 科技 计算机技术 编程入门 C++ 编程 现代C++ 刚哥伴读会 间接访问运算符 指针 C/C++ 智能指针 unique_ptr...
从名字上看shared_ptr是共享指针,意味着我们可以复制shared_ptr,复制出的智能指针指向同一个内部数据指针(即被智能指针包装的真正数据)。 构造shared_ptr 有多种方法可以构造shared_ptr,下面代码中有4种构造方式: int *p = new int(1); shared_ptr<int> sp1(p);// 通过普通指针p构造shared_ptr ...
智能指针(Smart Pointers):C++中的智能指针是模板类,可以帮助程序员管理动态分配内存的生命周期,避免内存泄漏。主要有std::unique_ptr、std::shared_ptr和std::weak_ptr。 std::unique_ptr:提供独占所有权的智能指针,意味着同一时间只能有一个std::unique_ptr指向一个给定的对象。当std::unique_ptr被销毁时,它所...
unique_ptr 是最简单、最容易使用的一个智能指针,在声明的时候必须用模板参数指定类型。 unique_ptr 实现独占式拥有或严格拥有的概念,保证同一时间内只有一个智能指针可以指向该对象。它对于避免资源泄漏(例如“以 new 创建对象后因为发生异常而忘记调用 delete“)特别有用。
说到了资源独占型的智能指针,那就顺便提一下资源共享型的智能指针--std::shared_ptr。 从名字可以看出来std::shared_ptr是用来管理共享资源的指针的一个智能指针。它相对于unique_ptr而言,可以复制以及赋值,通过复制和赋值来传递引用计数对象从而达到对同一个指针进行引用计数管理。它...