C++11 中引入的 delete 描述符主要有如下两个使用场景:

禁止编译器自动生成拷贝

Effective C++中提到

通过“私有化 + 只声明、不定义” 的方法禁止编译器生成某些拷贝构造函数、拷贝操作符等。

在C++11及以后,可以通过delete描述符来实现。

classno_copies

{

public:

no_copies(){}

no_copies(no_copiesconst&) =delete;

no_copies&operator=(no_copiesconst&) =delete;

};

可以为任意函数使用 delete 描述,表明其不可用

较“私有化+只声明不定义”的方式相比,将连接错误转移到编译错误

拷贝构造和拷贝赋值操作删除后,需要显式写一个移动构造函数和移动赋值操作符,

如果你在学习C/C++的过程中遇到了问题,可以来加入小编的企鹅圈问小编哦~小编很热情的(●’◡’●)

只移动的类,移动构造:

classmove_only{std::unique_ptrdata;public:move_only(constmove_only&) =delete;move_only(move_only&& other):data(std::move(other.data)){}move_only&operator=(constmove_only&) =delete;move_only&operator=(move_only&& other){data=std::move(other.data);return*this;}};move_only m1;move_onlym2(m1);// 错误,拷贝构造声明为“已删除”move_onlym3(std::move(m1));// OK,找到移动构造函数

删除特定的重载

如:函数需要 short 作为参数,禁止扩展为 int 类型

voidfoo(short);

voidfoo(int)=delete;

结果会这样:

foo(42);// 错误,int重载声明已经删除

foo((short)42);// OK

C/C++基础进阶篇:C++11 中引入的 delete 描述符使用场景相关推荐

  1. OpenCV3学习(11.3)关键点的描述符KeyPoint对象与匹配类DMatch

    corners:包含大量本地信息的像素块,并能够在另一张图中被快速识别 keypoints:作为 corners 的扩展,它将像素块的信息进行编码从而使得更易辨识,至少在原则上唯一 descripto ...

  2. 〖Python零基础入门篇⑩〗 - Python中的数字类型及应用

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  3. 〖Python零基础入门篇㉚〗- Python中的循环

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  4. 〖Python零基础入门篇㉗〗- Python中集合的常用方法

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  5. 〖Python零基础入门篇㊾〗- Python中的 os 包

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  6. 〖Python零基础入门篇㊽〗- Python中的时间包

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  7. Linux中通过Socket文件描述符寻找连接状态介绍

    针对下文的总结:socket是一种文件描述符 进程的打开文件描述符表 Linux的三个系统调用:open,socket,pipe 返回的都是一个描述符.不同的进程中,他们返回的描述符可以相同.那么,在 ...

  8. USB开发基础:USB命令(请求)和USB描述符

    一.USB命令 在USB规范里,对命令一词提供的单词为"Request",但这里为了更好的理解主机与设备之间的主从关系,将它定义成"命令". 所有的USB设备都 ...

  9. Java 基础进阶篇(四):抽象类与模板方法设计模式

    文章目录 一.抽象类.抽象方法概述 二.抽象类的特征 三.模板方法设计模式 3.1使用场景 3.2 实现步骤 3.3 写作文案例 补充:final 和 abstract 是什么关系? 一.抽象类.抽象 ...

最新文章

  1. 如何在Ubuntu上使用ssh-add永久添加私钥? [关闭]
  2. 【前端统计图】echarts实现属性修改
  3. 结对-英文词频分析-开发环境搭建过程
  4. Ribbon-3使用配置文件自定义Ribbon Client
  5. 关于PHP使用GD库生成的验证码无法在别处显示
  6. nowcoder OI 周赛 最后的晚餐(dinner) 解题报告
  7. typescript 接口 interface 的理解
  8. androidpn的学习研究(一)androidpn-server服务端相关配置的常识
  9. Linux 命令(119)—— diff 命令
  10. Citrix XenApp6.5 另类发布文档
  11. 使用wireshark抓取qq好友ip地址
  12. 汽车电子ISO7637-2 5A/5B抛负载测试详解
  13. 详细介绍ADMM交替方向乘子法
  14. mysql 80070057_0x80070057错误原因
  15. 树莓派学习笔记——串口与摄像头
  16. 为什么计算机无法读取u盘,U盘无法被电脑识别怎么办?
  17. 除了高额房贷,美国购房者仍面临其他“财政危机”
  18. DIY树莓派小车(一)树莓派4B+TB6612FNG驱动直流电机
  19. 解决Mscomctl.ocx丢失的问题
  20. win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练

热门文章

  1. 安防工程属于计算机系统集成的文件,安防系统集成(工程)市场规模为960亿元
  2. 无线地磁传感器可以产生哪些社会效益
  3. Web开发之常用框架BootStrap
  4. windows下气象grib/grib2数据转Tiff格式输出
  5. 装机之 BIOS、EFI与UEFI详解
  6. 计算机体系结构:Chapter 5 :ILP(指令级并行)
  7. 树分治(挑战p360)
  8. 对封装、继承、多态、抽象的理解
  9. ROS教程:视觉传感器使用漫谈
  10. Linux基础系列(2命令帮助的详细获取)