default 和 delete 与默认构造函数 的使用

前言

使用default和delete关键字来干预编译器自动生成的函数。让我详细解释一下这些知识点:

正文

编译器生成的默认构造函数:

如果类A没有定义任何构造函数,那么编译器会自动生成一个无参的默认构造函数 A()。这个默认构造函数实际上是一个空操作,类似于一条return语句,它不执行任何实际的操作。
用户定义的构造函数:

如果类A定义了任何构造函数,无论是有参还是无参构造函数,编译器就不再自动生成默认的无参构造函数。这是因为如果你手动定义了构造函数,编译器默认假设你已经处理了对象的初始化。
编译器生成的复制构造函数:

如果类A没有定义带引用参数 A & 的复制构造函数 A(const A &a),那么编译器会自动生成一个复制构造函数,通常使用浅拷贝(逐成员复制)的方式实现。这个默认生成的复制构造函数会对对象的成员进行一一复制,但如果类A包含了指针等资源,这种默认的浅拷贝可能会导致问题。

使用default和delete关键字:

default关键字可以用来显式告诉编译器,你希望使用编译器生成的默认函数。例如,如果你定义了其他构造函数但仍希望保留默认构造函数,你可以这样写:A() = default;。这会告诉编译器生成一个默认构造函数。
delete关键字用来告诉编译器,你希望删除某个函数,使其不可用。例如,如果你不希望编译器生成默认的复制构造函数,你可以这样写:A(const A &a) = delete;。这会告诉编译器禁用该复制构造函数。
总之,使用default和delete关键字可以用来显式指定编译器生成或删除某个特殊成员函数,从而更精确地控制类的行为,以符合你的需求,同时防止不希望发生的隐式行为。

在这里插入图片描述
我们看向 problem :
( 1 ) 结果会正常,无参构造函数会被调用
( 2 ) 结果会正常,因为本身默认就会有这个构造函数
( 3 ) 报错,这个构造函数被我们删掉了

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

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

相关文章

23062QTday2

完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮…

Word 文档转换 PDF、图片

工作有需要 Word 文档转换 PDF、图片 的场景,我们来看看 Java 开发中怎么解决这个问题的。 Word 转 PDF Word 转 PDF 分为商用 Aspose 方案和开源 Apache POIiText 方案。 Aspose 方案 这种方式在目前来看应该是最好的,无论是转换的速度还是成功的概…

速卖通API接口开发系列:帮助您提高运营效率!

您是否在寻找一种方法,让您的电商业务更高效,更具竞争力?我们有一个好消息要告诉您:速卖通,全球领先的电商平台,现在提供强大的API接口,让您可以轻松获取商品信息,处理订单&#xff…

Databend 开源周报第 111 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 理解 SHARE END…

【ArcSWAT】SWAT-CUP安装出错,提示加载类型库/DLL时出错

说明 SWAT-CUP早期版本不需要许可,可以在SWAT官网下载:点击下载swat_cup_setup_august2017_5162 最新版SWAT-CUP 2019需要再CUP官网下载,Swat-Cup,必须购买激活许可证才能获得此软件的全部功能。 我在win11上安装SWAT-CUP 2017版…

【力扣-每日一题】337. 打家劫舍 III

class Solution { public:pair<int,int> dfs_rob(TreeNode *root){//如果为根节点if(rootnullptr)return {0,0};auto [l,l_n]dfs_rob(root->left);auto [r,r_n]dfs_rob(root->right);int ol_nr_nroot->val;//当前节点偷&#xff0c;所获得的利益,子节点不能偷in…

Pytorch Advanced(二) Variational Auto-Encoder

自编码说白了就是一个特征提取器&#xff0c;也可以看作是一个降维器。下面找了一张很丑的图来说明自编码的过程。 自编码分为压缩和解码两个过程。从图中可以看出来&#xff0c;压缩过程就是将一组数据特征进行提取&#xff0c; 得到更深层次的特征。解码的过程就是利用之前的…

【Unity】ShaderGraph应用(浮动气泡)

【Unity】ShaderGraph应用(浮动气泡) 实现效果 一、实现的方法 1.使用节点介绍 Position&#xff1a;获取模型的顶点坐标 Simple Noise:简单的噪声&#xff0c;用于计算顶点抖动 Fresnel Effect&#xff1a;菲涅耳效应&#xff0c;用于实现气泡效果 计算用节点 Add&…

小程序键盘没有【小数点】输入

<input v-model"formData.number" :auto-height"true" placeholder"请输入" confirm-type"done" type"digit" maxlength"11" input"inputNumber" />number&#xff1a;数字键盘&#xff08;没有小…

【kafka】mac环境安装kafka

生产中使用到的中间件使用心得记录&#xff0c;感兴趣可以关注我一起学习&#xff5e; 环境&#xff1a; 硬件&#xff1a;mac 软件&#xff1a;kafka v3.0.0 安装步骤&#xff1a; 终端安装&#xff1a; 通过brew安装&#xff0c;会默认直接安装最新的版本 步骤1&#xf…

华为云云耀云服务器L实例评测|用Python的Flask框架加Nginx实现一个通用的爬虫项目

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;AWS/阿里云资深使用…

计算机专业毕业设计项目推荐06-工作室管理系统(Java+Vue+Mysql)

工作室管理系统&#xff08;JavaSpringVueMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现****最后想说的****联系方式** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较…

FPGA----VCU128的DDR4无法使用问题(全网唯一)

1、在Vivado 2019.1版本中使用DDR4的IP核会遇到如下图所示的错误&#xff0c;即便过了implementation生成了bit&#xff0c;DDR4也无法正常启动。 2、解决办法&#xff0c;上xilinx社区搜一下就知道了 AMD Customer Communityhttps://support.xilinx.com/s/article/69035?lan…

(JavaEE) 多线程基础3——多线程的代码案例 (单例模式, 阻塞队列,定时器)详解!!!

​​​​​​​ 目录 单例模式 什么是单例模式&#xff1f; —— “饿汉模式” —— “懒汉模式” ——懒汉模式-多线程版 ——懒汉模式-多线程版&#xff08;改进版&#xff09; 总结“懒汉模式”—— 多线程&#xff08;线程安全版&#xff09; 的要点 阻塞队列 什么…

K8s(Kubernetes)学习(六)——Ingress

第六章 Ingress 什么是 IngressIngress 和 Service 区别Ingress 控制器 Traefik 使用Ingress Route的定义 1 简介 https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/ Ingress 是一种 Kubernetes 资源类型&#xff0c;它允许在 Kubernetes 集群中暴露…

【TCP】滑动窗口、流量控制 以及拥塞控制

滑动窗口、流量控制 以及拥塞控制 1. 滑动窗口&#xff08;效率机制&#xff09;2. 流量控制&#xff08;安全机制&#xff09;3. 拥塞控制&#xff08;安全机制&#xff09; 1. 滑动窗口&#xff08;效率机制&#xff09; TCP 使用 确认应答 策略&#xff0c;对每一个发送的数…

深入解读什么是期权的内在价值和时间价值?

期权品种越来越丰富&#xff0c;对于大家套利对冲都有很多的选择。而有些初学者对时间价值一直不理解&#xff0c;今天呢&#xff0c;就给大家讲一讲深入解读什么是期权的内在价值和时间价值&#xff1f;本文来自&#xff1a;期权酱 01在期权交易过程中&#xff0c;想必大家都会…

抖音seo矩阵系统源代码分享

技术开发注意事项&#xff1a; 确定业务需求&#xff1a;在开发前&#xff0c;需要明确抖音矩阵系统的业务需求&#xff0c;了解用户的需求和使用习惯&#xff0c;明确系统的功能、性能和安全需求。 选择合适的技术方案&#xff1a;根据系统的需求和复杂度&#xff0c;选择合适…

@EventListener 监听事件 ,在同一个虚拟机中如何保证顺序执行

文章目录 前言EventListener 监听事件 &#xff0c;在同一个虚拟机中如何保证顺序执行1. 设计原理2. 具体编码2.1. 编码事件监听器2.2. 制作一个生成序号方法2.3. 制作测试代码2.4. 测试结果 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;…

如何在 Excel 中进行加,减,乘,除

在本教程中&#xff0c;我们将执行基本的算术运算&#xff0c;即加法&#xff0c;减法&#xff0c;除法和乘法。 下表显示了我们将使用的数据以及预期的结果。 | **S / N** | **算术运算符** | **第一个号码** | **第二个号码** | **结果** | | 1 | 加法&#xff08;&#xff…