C++1114新标准—— =delete、=default

系列文章目录

C++11&14新标准——Variadic templates(数量不定的模板参数)
C++11&14新标准——Uniform Initialization(统一初始化)、Initializer_list(初始化列表)、explicit
C++11&14新标准—— =delete、=default


文章目录

  • 系列文章目录
    • 1. =default
    • 2. delete


1. =default

  default是C++11提出的新关键字,效果为获得一个系统默认的构造函数(内容为空),只能用在五大成员函数上,如果用在其他函数上,编译器会报错。

class Zoo{
public:Zoo()=default;  //默认构造函数Zoo(const Zoo&)=default;                    //拷贝构造函数Zoo(const Zoo&&)=default;                   //移动构造函数Zoo& operator=(const Zoo&)=default;         //移动构造函数Zoo& operator=(const Zoo&&)=default;        //移动构造赋值重载
private:int d1;int d2;
}

  对于构造函数来说,可以同时存在自定义构造函数和default构造函数,因为构造函数本来就可以有很多个;但对于剩下的四个函数来说,当有了自定义构造函数的时候,就不能再使用default,否则编译器将报错。

class Zoo{
public:Zoo(int l1, int l2):d1(l1),d2(l2){};Zoo()=default;  //正确Zoo(const Zoo& x):d1(x.d1),d2(x.d2){};Zoo(const Zoo&)=default; // 报错!Zoo& operator=(const Zoo&){d1 = x.d1;d2 = x.d2;return *this;};         //移动构造函数Zoo& operator=(const Zoo&)=default;// 报错!private:int d1;int d2;
}

技巧:如果一个类里面的成员包含指针对象,那么绝大部分都要自己定义构造函数,不能使用default;相反如果成员不包含指针,那么基本上都可以使用default构造函数;

2. delete

  delete的效果为该函数禁止使用,可以用在五大成员函数之外的其他函数上。

class Zoo{
public:Zoo()=delete;  //禁止默认构造函数Zoo(const Zoo&)=delete;                    //禁止拷贝构造函数Zoo(const Zoo&&)=delete;                   //禁止移动构造函数Zoo& operator=(const Zoo&)=delete;         //禁止移动构造函数Zoo& operator=(const Zoo&&)=delete;        //禁止移动构造赋值重载
private:int d1;int d2;
}

  可以将特定参数的构造函数delete,用于阻止该类初始化;也可以将所有的构造函数全部delete,这样使得该类成为一个静态类,无法实例化。
  将拷贝构造函数delete,会使得该类成为一个单例。也可以通过将拷贝构造函数定义为private,使得只有友元函数和该类的成员可以调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中伟视界:水位识别、智能化巡检、远程监控,提升智慧河道管理效率

随着现代科技的发展,人工智能(AI)算法在各行各业中的应用越来越广泛。特别是在水利行业中,智慧河道的运营管理已成为了一个重要的课题。本文将探讨如何利用AI算法优化智慧河道的运营效率,以及如何通过水位识别视频分析…

CentOS7 OpenSSL升级到OpenSSH9.5p1

原文链接: CentOS7 OpenSSL升级1.1.1w;OpenSSH 升级 9.5p1 保姆级教程 openssl从3.1.0升级到3.1.1遇到的问题 注意操作时需要联网请参考如下链接 内网服务器联网安装依赖参见我的另一篇文章 一、 前言 OpenSSH 的加密功能需要用到OpenSSL,所…

C语言指针基础题(二)

目录 例题一题目解析及答案 例题二题目解析及答案 例题三题目解析及答案 例题四题目解析及答案 例题五题目解析及答案 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸&#x1f…

Unity | 渡鸦避难所-2 | 搭建场景并添加碰撞器

1 规范项目结构 上期中在导入一系列的商店资源包后,Assets 目录已经变的混乱不堪 开发过程中,随着资源不断更新,遵循一定的项目结构和设计规范是非常必要的。这可以增加项目的可读性、维护性、扩展性以及提高团队协作效率 这里先做下简单的…

智能优化算法应用:基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.斑点鬣狗算法4.实验参数设定5.算法结果6.…

攻防世界-web-upload

1. 题目描述 打开链接,是这样的一个注册界面 先试着注册一个账号看看,这里简单操作,注册test/test,注册完后进行登录 登录成功后进入到这样一个文件上传界面。当前从界面上得到的信息暂时就是这些了。 2. 思路分析 既然存在上传…

Iteration limit reached at time 32 ns.

Iteration limit reached at time 32 ns. 会不会是时序逻辑改成组合逻辑了? 导致累加次数爆炸

【ret2hbp】一道板子测试题 和 SCTF2023 - sycrpg

前言 ret2hbp 主要是利用在内核版本 v6.2.0 之前,cpu_entry_area mapping 区域没有参与随机化的利用。其主要针对的场景如下: 1)存在任意地址读,泄漏内核地址 2)存在无数次任意地址写,泄漏内核地址并提权…

HCIA-WLAN V3.0,那些重点要点

一、WLAN各个标准,工作频段,理论速率。 二、OFDM和OFDMA,工作频段,空间流。 三、三种帧类型:管理帧、控制帧、数据帧,CAPWAP报文和端口。 四、帧间间隔,波束成形,信道绑定&#xff0…

接口测试要测试什么?怎么测?

本文主要分为两个部分: 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系 第二部分:主要介绍为什么要做接口测试,并简单总结接口持续集成和接口质量评估…

正确看待鸿蒙不兼容Android,这不是趋势?

华为可能明年推出不兼容安卓的鸿蒙版本。11月20日,据澎湃新闻报道,一华为相关人士表示,推出时间还不确定,未来IOS、鸿蒙、安卓将为三个各自独立的系统。 稍早前据证券时报报道,有业内人士亦表示:“华为内部…

Re59:读论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 模型开源地址:https://huggingface.co/facebook/rag-token-nq ArXiv下载地址:https://arxi…

Linux——MySQL数据库的使用

访问MySQL数据库 MySOL数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问MySOL数据库 需要使用专门的客户端软件,在Linux系统中,最简单、易用的MySQL.客户端软件是其自带的mysql 命令工具。 登录到MySQL服…

关于Cython生成的so动态链接库逆向

来个引子:TPCTF的maze题目 如何生成这个so文件 为了研究逆向,我们先搞个例子感受一下生成so的整个过程,方便后续分析 创建对应python库文件 testso.py def test_add(a,b):a int(a)b int(b)return a bdef test_calc(li):for i in range…

逆向思考 C. Fence Painting

Problem - 1481C - Codeforces 思路:逆序考虑,因为每一块木板都是被最后一次粉刷所决定的。 从后往前开始,对于 c i c_i ci​来说, 如果这个颜色还有没有涂的木板,那么涂到其中一个木板即可如果这个颜色下没有未涂的…

git上传文件夹后打不开,有@.....

这种情况是你上传的这个文件夹也是个git仓库,需要删除.git文件。 如果你删除.git文件后,上传git还是不行,文件夹还是…,那就需要清理以下整个项目的缓存: git rm -r --cached .

系统思考与啤酒游戏经营沙盘

结束一家汽车零配件公司《系统思考与啤酒游戏经营沙盘》的内训课,4个小组基本上都有共同的心智模式,这也代表团队有一些集体的盲点。不仅仅对啤酒游戏经营沙盘做了复盘,同时也借用学员画出的系统环路图完成真实案例的研讨以及团队共识&#x…

从零开始学机器学习,这些学习网站让你事半功倍!

介绍:机器学习是人工智能(AI)和计算机科学的一个分支,它专注于使用数据和算法,模仿人类学习的方式,逐步提高自身的准确性。更具体来说,机器学习是一门关于数据学习的科学技术,它能帮…

功能更新|免费敏捷工具Leangoo领歌私有部署新增第三方身份认证和API对接

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo支持敏捷研发管理全流程,包括小型团队敏捷开发,规模化敏捷SAFe,Scr…

MySQL笔记-第11章_数据处理之增删改

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第11章_数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中 2. 更…