【C++:默认成员函数】

news2024/9/21 3:13:02

构造函数

特点

  1. 没有返回值
  2. 支持函数重载
  3. 对象实例化时,编译器自动调用
  4. 作用不是构造,而是初始化
  5. 函数名与类名相同
  6. 无参函数和全缺省的函数,不用传参就能调用的函数叫做默认构造函数

构造函数是一个特殊的成员函数

注:无参构造函数在实例化时,不需要增加(),原因:会与函数声明混淆

无参和有参的构造函数不能同时存在,原因:调用会存在歧义

构造函数如果自己写了,那么编译器就不会自动生成,以下就是自己写了构造函数,编译器没有自动生成,导致定义的对象找不到对应的构造函数出现的错误

构造函数对于内置类型不做处理(一般是随机值),自定义类型会调用它对应的构造函数(如果自己显式定义,编译器会自动生成无参构造函数)


析构函数

特征:

  1. 关键符号“~”,在函数名前加~
  2. 在对象的生命周期结束时,编译器自动调用
  3. 无参数无返回值
  4. 不支持函数重载
  5. 析构顺序:先定义的后析构

析构顺序

局部对象(后定义先析构)>局部的静态>全局对象(后定义先析构)

拷贝构造函数

特点:

  1. 拷贝构造是构造函数的一种重载形式
  2. 拷贝构造在传参时,需要引用传参,不能传值传参(会引发无穷递归)
  3. 拷贝构造如果没有显示定义,编译器会主动生成一个,默认的拷贝构造根据内存存储的大小进行拷贝,这种叫做浅拷贝/值拷贝

编译器默认生成的只能用于浅拷贝的构造,不例外有时候会遇到一些需要深拷贝的对象(例如自定义需要用malloc开辟空间的对象,仅仅是浅拷贝不行,容易造成析构重复同一块空间)

当拷贝构造完结束后,d2会自动调用析构函数,析构函数就会析构掉指向的空间,此时d1成为野指针。因此需要深拷贝,让d2拷贝一块与d1指向的空间一样大小的内存,这样就可以避免野指针出现

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

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

相关文章

一场夏测杀出个“双冠王”,极越01成为纯电SUV标杆

文 | AUTO芯球 作者 | 雷慢 万万没想到,懂车帝夏测运动会杀出一匹最大的黑马,竟然是极越01。 当前正在进行的懂车帝夏测运动会,在“纯电SUV/MPV续航达成率”赛事中,极越01以85.8%的续航达成率获得第一名。并且由于赛制规则限制…

Go泛型详解

官网文档:https://go.dev/blog/intro-generics 泛型为该语言添加了三个新的重要功能: 函数和类型的类型参数。将接口类型定义为类型集,包括没有方法的类型。类型推断,在许多情况下允许在调用函数时省略类型参数。 类型参数&…

Java高级重点知识点-22-缓冲流、转换流、序列化流、打印流

文章目录 缓冲流字节缓冲流字符缓冲流 转换流InputStreamReader类OutputStreamWriter类 序列化ObjectOutputStream类ObjectInputStream类 打印流 缓冲流 缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流 基本原理: 缓冲流的…

SpringBoot集成Sentinel 实现QPS限流

Spring Cloud Alibaba 的 Sentinel 组件提供了丰富的“流量控制“规则, 单体SpringBoot应用中也可以集成 Sentinel 来实现流量控制,本文主要讲 QPS流量控制。 SpringBoot集成Sentinel有两种方式: 一种是 dashboard控制面板的方式&#xff0…

virturalBox+K8S部署jaeger-all-in-one

pod的yaml如下:这里使用的是主机host模式 apiVersion: apps/v1 kind: Deployment metadata:name: jaegerlabels:app: jaeger spec:replicas: 1selector:matchLabels:app: jaegertemplate:metadata:labels:app: jaegerspec:hostNetwork: truecontainers:- name: jae…

【js面试题】深入理解浏览器对象模型(BOM)

面试题:请你说说对bom的理解,常见的bom对象你了解哪些 引言: 浏览器对象模型(BOM)是JavaScript中用于与浏览器窗口及其内容进行交互的一组对象和方法。 BOM的核心是window对象,它代表了浏览器窗口本身&…

tableau人口金字塔,漏斗图,箱线图绘制 - 13

人口金字塔,漏斗图,箱线图 1. 金字塔1.1 定义1.2 金字塔创建1.2.1 数据导入1.2.2 数据异常排查1.2.3 创建度量字段1.2.4 转换属性1.2.5 创建数据桶1.2.6 选择相关属性1.2.7 年龄排序1.2.8 创建计算字段1.2.9 选择相关字段1.2.10 设置轴排序1.2.11 设置颜…

Python编程学习笔记(4)--- 字典

目录 1 什么是字典 2 使用字典 2.1 访问字典中的值 2.2 添加键值对 2.3 创建空字典 2.4 修改字典中的值 2.5 删除键值对 2.6 类似键值对组成的字典 2.7 使用get()来访问值 3 遍历字典 3.1 遍历所有键值对 3.2 遍历字典中的所有键 3.3 按照特…

【C语言 】C语言 学生选修课程系统(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

【限免】HFM雷达信号及模糊函数MATLAB代码

微信公众号:EW Frontier QQ交流群:949444104 HFM信号 HFM 信号表达式: 式中:T 为脉冲宽度,b -k / f1 f2 为信号的调频参数,k B / T 为对应的线性调频斜率,B 为信号带宽,f0 为波形中心频率,f1 f0 -B / 2 为下限频率,f2 f0 B / 2 为上限频率。 仿真结…

【系统架构设计】计算机组成与体系结构(三)

计算机组成与体系结构(三) 计算机系统组成存储器系统主存储器辅助存储器Cache存储器Cache 基本原理映射机制直接映射全相联映射组相联映射 替换算法写操作 流水线(计算)流水线周期流水线执行时间流水线的吞吐率流水线的加速比 计算…

【unity笔记】九、Unity添加串口通信

unity仿真使用虚拟串口调试。下面为简单流程。 常用串口调试软件在这里下载。 1.虚拟串口 添加虚拟串口,这里使用com1 com2 2. 串口调试 在这里为虚拟串口发送消息。 3. unity配置 3.1 设置 在文件->生成设置->玩家设置->玩家->其他设置 中找到…

C++|智能指针

目录 引入 一、智能指针的使用及原理 1.1RAII 1.2智能指针原理 1.3智能指针发展 1.3.1std::auto_ptr 1.3.2std::unique_ptr 1.3.3std::shared_ptr 二、循环引用问题及解决方法 2.1循环引用 2.2解决方法 三、删除器 四、C11和boost中智能指针的关系 引入 回顾上…

接口测试框架基于模板自动生成测试用例!

引言 在接口自动化测试中,生成高质量、易维护的测试用例是一个重要挑战。基于模板自动生成测试用例,可以有效减少手工编写测试用例的工作量,提高测试的效率和准确性。 自动生成测试用例的原理 为了实现测试用例数据和测试用例代码的解耦&a…

企事业网站需要做软件测试吗?包括哪些测试内容和好处?

在这个数字化时代,企事业网站已经成为宣传和交流的重要平台,它的稳定性、安全性和用户体验对于企业形象和业务发展至关重要。因此,为了确保企事业网站的良好运行,对其进行软件测试是至关重要的。那么网站测试具体有哪些好处?又包…

从 ArcMap 迁移到 ArcGIS Pro

许多 ArcMap 用户正在因 ArcGIS Pro 所具有的现代 GIS 桌面工作流优势而向其迁移。 ArcGIS Pro 与其余 ArcGIS 平台紧密集成,使您可以更有效地共享和使用内容。 它还将 2D 和 3D 组合到一个应用程序中,使您可以在同一工程中使用多个地图和多个布局。 Arc…

redis源码分析之底层数据结构(一)-动态字符串sds

1.绪论 我们知道redis是由c语言实现的,c语言中是自带字符串的,但是为什么redis还要再实现自己的动态字符串呢,这种动态字符串的底层数据结构是怎样的呢?接下来我们带着这些问题来看一看redis中的动态字符串sds。 2.sds的组成 struct __at…

Python模块ConfigParser读取应用程序的配置文件简单示例

一、模块说明: 系统管理员通常通过文本编辑器编辑这些配置文件,以设置应用程序的默认值,然后应用程序将读取并解析这些配置文件,并根据其中的内容执行对应操作。ConfigParser模块具有read()方法,用于读取配置文件。 …

socket编程(2) -- TCP通信

TCP通信 2. 使用 Socket 进行TCP通信2.1 socket相关函数介绍socket()bind()listen()accept()connect()2.2 TCP协议 C/S 模型基础通信代码 最后 2. 使用 Socket 进行TCP通信 Socket通信流程图如下: 这里服务器段listen是监听socket套接字的监听文件描述符。如果客户…

稳!连续五年蝉联第一,华为UPS何以领跑市场?

数字经济的蓬勃发展、人工智能浪潮的兴起,使得数据中心产业正经历一场影响深远的变革。 这其中,作为数据中心电能质量治理和不间断供电的核心组件,UPS(不间断电源,Uninterruptible Power Supply)堪称数据中…