当前位置: 首页 > news >正文

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 ) 报错,这个构造函数被我们删掉了

相关文章:

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

前言 使用default和delete关键字来干预编译器自动生成的函数。让我详细解释一下这些知识点: 正文 编译器生成的默认构造函数: 如果类A没有定义任何构造函数,那么编译器会自动生成一个无参的默认构造函数 A()。这个默认构造函数实际上是一个…...

【开发篇】一、热部署

文章目录 1、手工启动热部署2、自动启动热部署3、热部署范围配置4、关闭热部署功能 1、手工启动热部署 日常开发与调试&#xff0c;改几行代码想看效果就得手动点重启&#xff0c;很繁琐&#xff0c;接下来考虑启动热部署。首先引入springboot开发者工具&#xff1a; <dep…...

点云从入门到精通技术详解100篇-定子装配过程中基于深度学习的易变形材料的点云分割(下)

目录 4.3.2 校正网络 4.3.3 浅层特征提取网络 4.3.4 空间边界 Transformer 深层特征提取网络 4.3.5 损失函数...

谷歌浏览器关闭自动更新功能

背景&#xff1a;自动化测试需要下载webdriver驱动&#xff0c;然而浏览器自动更新会导致原来的驱动版本与现有浏览器版本不匹配&#xff0c;所以要禁用掉浏览器自动更新功能。 1.右键-我的电脑-打开管理&#xff1b; 2.选择任务计划程序-任务计划程序库-找到两个chrome自动更新…...

电商业务--技术负责人 250K*15

职位描述 研发团队管理 系统搭建 技术管理 系统架构 岗位职责 负责/参与到中大型负责系统的整体架构和设计&#xff1b; 根据业务特点和行业最佳实践&#xff0c;设计符合多个市场物流业务需求&#xff0c;且具备可扩展能力的系统架构和业务架构承担团队稳定性建设工作&#…...

MySQL只同步单个表或多个表,非全部同步!

replicate-do-table 是 MySQL 复制配置中的一个选项&#xff0c;它允许您指定要在从服务器上复制的表。如果您想要只复制主服务器上特定的表到从服务器&#xff0c;您可以使用这个选项。 以下是如何操作 replicate-do-table 的步骤&#xff1a; 停止从服务器: 在从服务器上执行…...

【论文基本功】【LaTeX】个人常用易忘LaTeX命令

【论文基本功】【LaTeX】个人常用易忘LaTeX命令 1. 基本符号2. 引用3. 字体及符号大小4. 其他参考 1. 基本符号 符号LaTeX命令备注 ∣ ⋅ ∣ | \cdot | ∣⋅∣| \cdot |绝对值 ∣ ∣ ⋅ ∣ ∣ || \cdot || ∣∣⋅∣∣\| \cdot \|范数 ⌈ ⋅ ⌉ \lceil \cdot \rceil ⌈⋅⌉\lce…...

JVM参数调优——G1收集器

开启 G1 Collector G1收集器的出现除了提供可控的低延迟GC&#xff0c;解决历史收集器的一些弊病&#xff0c;同时还尽力简化调优参数 对于大多数应用&#xff0c;开启收集器&#xff0c;再配置一下Xms和Xmx就足够了&#xff08;不建议配置Xmn&#xff09; -XX:UseG1GC核心参…...

Linux cp命令使用指南:详细教程及实际应用场景解析

文章目录 Linux中的cp命令使用指南1. 简介1.1 Linux操作系统简介1.2 文件系统和目录结构1.3 cp命令概述 2. cp命令基本用法2.1 复制文件2.2 复制目录2.3 复制多个文件或目录2.4 递归复制2.5 强制覆盖已存在文件2.6 保留文件权限和属性 3. 高级用法3.1 保留符号链接3.2 仅复制更…...

树结构数据在table中回显 treeselect disabled

<el-table-column label"产业认定" align"center" prop"industryIdentification"><template slot-scope"scope"><treeselectv-if"scope.row.industryIdentification"v-model"scope.row.industryIdentif…...

BOA服务器移植

BOA服务器移植 1、源码下载 http://www.boa.org/ News! (last updated 23 February 2005) Latest Released Version (0.94.13) here (signature here) --- 下载地址1.1 boa简介&#xff1a; 其可执行代码只有大约60KB左右&#xff0c;Boa是一个单任务的HTTP服务器&#xff…...

洛谷刷题入门篇:顺序结构

链接如下&#xff1a;https://www.luogu.com.cn/training/100#problems 一、Hello,World! 题目链接&#xff1a;https://www.luogu.com.cn/problem/B2002 题目描述 编写一个能够输出 Hello,World! 的程序。 提示&#xff1a; 使用英文标点符号&#xff1b;Hello,World! 逗…...

LVS+Haproxy

LVSHaproxy 一、Haproxy简介1.1、Haproxy应用分析1.2、Haproxy的特性1.3、常见负载均衡策略1.4、LVS、Haproxy、Nginx区别1.5、 Haproxy的优点1.6、常见的Web集群调度器 二、Haproxy部署实例四、日志定义优化 一、Haproxy简介 Haproxy 是一个使用C语言编写的自由及开放源代码软…...

Linux知识

文章目录 一、Apt1、查看操作系统信息2、换源3、比较4、用法5、ubuntu获取源码 二、pkg-config三、调试glibc 一、Apt 1、查看操作系统信息 使用以下命令查看本机的操作系统和位数信息&#xff1a; uname -m && cat /etc/*release输出&#xff1a; x86_64 DISTRIB_I…...

Java基础(三)

前言&#xff1a;前面主要涉及到java的基本语法&#xff0c;接下来本篇博客主要记录Java中Collections类、泛型、以及File类、IO流的学习。 目录 数据结构 泛型 集合 分类 Collection的分类 collection常用方法 collection遍历方式 迭代器 for循环 Lambda表达式 Lis…...

[Firefox/快捷键] 禁用Ctrl-W快捷键

最近给Firefox这一快捷键坑了几次。恰好发现在CMU也有人遇到类似的烦恼&#xff0c;找到一篇基于Linux的教程。 我使用的是Windows&#xff0c;所以根据自己的情况做了些修改&#xff0c;成功了。小众需求就犯懒直接将笔记贴上了&#xff0c;如果有谁用得上的话&#xff0c;我写…...

Git常用命令diff和mv

Git常用命令diff和mv 1、diff # 查看工作区和暂存区所有文件的对比 # 该命令可以显示尚未添加到stage的文件的变更 $ git diff# 查看工作区和暂存区单个文件的对比 $ git diff file# 显示暂存区和上一个commit的差异 # 查看暂存区与指定提交版本的不同,版本可缺省为HEAD $ gi…...

【谢希尔 计算机网络】第3章 数据链路层

数据链路层 数据链路层的地位 网络中的主机、路由器等都必须实现数据链路层局域网中的主机、交换机等都必须实现数据链路层不同链路层可能采用不同的数据链路层协议 数据链路层信道类型 点对点信道 使用一对一的点对点通信方式广播通信 必须使用专用的共享系电脑协议来协调这些…...

《DevOps实践指南》- 读书笔记(九)

DevOps实践指南 25. 附录附录 1 DevOps 的大融合精益运动敏捷运动Velocity 大会运动敏捷基础设施运动持续交付运动丰田套路运动精益创业运动精益用户体验运动Rugged Computing 运动 附录 2 约束理论和核心的长期冲突附录 3 恶性循环列表附录 4 交接和队列的危害附录 5 工业安全…...

数据库数据恢复-SQL SERVER数据库分区被格式化的数据恢复方案

SQL SERVER数据库故障类型&#xff1a; 1、SQL SERVER数据库文件被删除。 2、SQL SERVER数据库所在分区格式化。 3、SQL SERVER数据库文件大小变为“0”。 4、使用备份还原数据库时覆盖原数据库。 SQL SERVER数据库故障原因&#xff1a; 1、人为误操作。 2、文件系统损坏&#…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...