【C++:默认成员函数初始化列表】

构造函数

特点

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

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

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

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

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

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


析构函数

特征:

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

析构顺序

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

拷贝构造函数

特点:

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

星辰宇宙动态页面vue版,超好看的前端页面。附源码与应用教程(若依)

本代码的html版本,来源自“山羊の前端小窝”作者,我对此进行了vue版本转换以及相关应用。特此与大家一起分享~ 1、直接上效果图: 带文字版:文字呼吸式缩放。 纯净版: 默认展示效果: 缩放与旋转后&#xf…

简单的手动实现spring中的自动装配案例

简简单单的实现一个spring中的自动装配和容器管理的小骚操作。 1,创建AutoSetBean.java 使用injectBeans静态方法,可以扫描指定包下的所有带MyInject注解的字段,如果在beans的Map中存在这个字段的实例化类,则执行装配。 import…

【UE5.1 角色练习】13-枪械射击——拿出与收起武器

目录 效果 步骤 一、安装射击武器 二、拿武器和收武器 效果 步骤 一、安装射击武器 1. 在虚幻商城中将“FPS Weapon Bundle”添加到工程中,由于我们使用的是5.1版本,我们可以先将该资产放入UE4工程中,然后迁移到5.1版本的工程 2. 打开角…

alphazero学习

AlphaGoZero是AlphaGo算法的升级版本。不需要像训练AlphaGo那样,不需要用人类棋局这些先验知识训练,用MCTS自我博弈产生实时动态产生训练样本。用MCTS来创建训练集,然后训练nnet建模的策略网络和价值网络。就是用MCTSPlayer产生的数据来训练和…

Spring与Quartz整合

Quartz框架是一个轻量级的任务调度框架,它提供了许多内置的功能,包括:支持作业的调度、集群调度、持久化、任务持久化、任务依赖、优先级、并发控制、失败重试等。同时也支持自定义作业类型和触发器类型。与Spring整合步骤如下: …

深入解析.[datastore@cyberfear.com].mkp勒索病毒:威胁与防范

引言 在数字化时代,网络安全问题日益严峻,其中勒索病毒(Ransomware)作为一种极具破坏性的恶意软件,严重威胁着个人用户和企业机构的数据安全。.[ datastorecyberfear.com].mkp勒索病毒便是这一领域中的一颗“毒瘤”&am…

2.5 C#视觉程序开发实例1----IO_Manager实现脉冲输出控制

2.5 C#视觉程序开发实例1----IO_Manager实现脉冲输出控制 1 目标效果视频 目标效果展示 IO_Manager 2 信号输出流程说明 为了防止线程不同步导致输出信号没有被输出, 尽量使用一个输出队列来进行输出的管理 3 IO_Manager中添加内容 3.0 添加两个类 1 Out_Sta…

【课程总结】Day13(下):人脸识别和MTCNN模型

前言 在上一章课程【课程总结】Day13(上):使用YOLO进行目标检测,我们了解到目标检测有两种策略,一种是以YOLO为代表的策略:特征提取→切片→分类回归;另外一种是以MTCNN为代表的策略:先图像切片→特征提取→分类和回归。因此,本章内容将深入了解MTCNN模型,包括:MTC…

Windows 11文件资源管理器选项卡的4个高级用法,肯定有你喜欢的

作为一个每天使用文件资源管理器来管理我的工作流程的人,选项卡帮助我为处于不同完成阶段的工作创建了不同的文件夹。以下是我使用选项卡提高工作效率的最佳技巧。 打开和关闭选项卡 假设你的计算机上安装了Windows 11的最新更新,请按Ctrl+E打开文件资源管理器。在我发现“…

STM32智能家居掌上屏实战:从WiFi连接到MQTT通信,打造你的家庭物联网网关

摘要: 本文深入探讨一种基于STM32的智能家居掌上屏设计方案,详细阐述其硬件架构、软件设计以及通信协议等关键技术细节。该方案利用WiFi构建局域网,实现与各类传感器、执行器的便捷交互,并通过TFT彩屏提供直观的控制和数据展示,旨…

五、保存数据到Excel、sqlite(爬虫及数据可视化)

五、保存数据到Excel、sqlite(爬虫及数据可视化) 1,保存数据到excel1.1 保存九九乘法表到excel(1)代码testXwlt.py(2)excel保存结果 1.2 爬取电影详情并保存到excel(1)代…

大模型周报|15 篇必读的大模型论文

大家好,今日必读的大模型论文来啦! 1.谷歌推出风格感知拖放新方法 Magic Insert 来自谷歌的研究团队提出了 Magic Insert,用于以物理上可信的方式将用户提供的图像中的对象拖放到不同风格的目标图像中,同时与目标图像的风格相匹…

基于CLIP特征的多模态大模型中的视觉短板问题

【论文极速读】 基于CLIP特征的多模态大模型中的视觉短板问题 FesianXu 20240706 at Tencent WeChat search team 前言 今天读到篇CVPR 24’的论文 [1],讨论了常见的多模态大模型(大多都基于CLIP语义特征,以下简称为MLLM)中的视觉…

Git错误分析

错误案例1: 原因:TortoiseGit多次安装导致,会记录首次安装路径,若安装路径改变,需要配置最后安装的路径。

HTML5使用<details>标签:展开/收缩信息

details 标签提供了一种替代 JavaScript 的方法,它主要是提供了一个展开/收缩区域。details 标签中可以使用 summary 标签从属于 details 标签,单击 summary 标签中的内容文字时,details 标签中的其他所有从属元素将会展开或收缩。语法如下&a…

Redies基础篇(一)

Redis 是一个高性能的key-value数据库。Redies支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的&#xff…

小白必看!推荐三本高质量python书籍,让你直接原地起飞

Python是一种多功能语言。它经常用作Web应用程序的脚本语言,嵌入到软件产品中,以及人工智能和系统任务管理。它既简单又强大,非常适合初学者和专业程序员。 python的自学书籍非常多,涉及基础入门、web开发、机器学习、数据分析、…

印度第二大移动提供商 3.75 亿数据待售

一个名为“xenZen”的威胁行为者已在 BreachForums 上出售 Airtel 的数据库。 该列表包含来自 3.75 亿客户的数据。 数据详情: 手机号码 名 出生日期 父亲的名字 地址 电子邮件ID 类型 国籍 阿达尔 带照片的身份证明详细信息 地址详细信息证明等 鉴于…

003-基于Sklearn的机器学习入门:回归分析(上)

本节及后续章节将介绍机器学习中的几种经典回归算法,所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇,将介绍基础的线性回归方法,包括线性回归、逻辑回归、多项式回归和岭回归等。 2.1 回归分析概述 回归(Regression&…

3-3 超参数

3-3 超参数 什么是超参数 超参数也是一种参数,它具有参数的特性,比如未知,也就是它不是一个已知常量。是一种手工可配置的设置,需要为它根据已有或现有的经验,指定“正确”的值,也就是人为为它设定一个值&…