类和对象test

一、初始化列表

引言:

虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量 的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始 化一次,而构造函数体内可以多次赋值。

1.概念

以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟
一个放在括号中的初始值或表达式。

2.初始化列表存在的意义

初始化列表主要是为解决三种成员变量的初始化:

(1)、引用成员变量

(2)、const成员变量
(3)、自定义类型成员(且该类没有默认构造函数时)
为什么呐?

首先需要明白一点:

在private处写的是成员变量的声明,那么成员变量的定义在哪里呐?答案就是在初始化列表。我们知道引用和const类型的变量必须在定义的时候初始化,而C++就规定成员函数的定义在初始化列表,所以引用和const类型的成员变量只能在初始化列表处初始化。

然后对于自定义类型,也是需要在初始化列表处初始化。

然后又有一个问题,那就是若没有在初始化列表显示定义,会有什么现象发生呐?

若成员变量没有显示定义,初始化列表也是定义,规则如下:

(1)、内置类型默认给随机值。

(2)、对于引用和const修饰的变量,必须显示定义。

(3)、自定义类型成员会去调用它的默认构造函数。

这里又会产生一个问题,若自定义类型没有默认构造函数,会怎么样?

答案是编译会报错。

解决方法:

(1)、定义一个默认构造函数

(2)、显示定义。

3.缺省值与初始化列表

我们知道声明处写的赋值,叫做缺省值,那这里的缺省值是给谁的呐?答案就是给初始化列表。但当初始化列表显示定义了,缺省值就会失效。

4.注意:

1、尽量使用初始化,但不能只给初始化列表,比如一些指针变量需要malloc动态开辟空间,但可能会开辟失败,只用初始化列表就无法解决。

2、每个成员只能在初始化列表中出现一次,因为那是定义的地方。

3、初始化列表初始化顺序跟成员成员变量声明的顺序保持一致。

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

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

相关文章

【华为】AC直连二层组网隧道转发实验配置

【华为】AC直连二层组网隧道转发实验配置 实验需求拓扑配置AC数据规划表 AC的配置顺序AC1基本配置(二层通信)AP上线VAP组关联--WLAN业务流量 LSW1AR1STA获取AP的业务流量 配置文档 实验需求 AC组网方式:直连二层组网。 业务数据转发方式:隧道转发。 DHC…

SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错,或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红, 可能是IDEA中文软件包冲突 4. 若以上还是不行,可以添加…

模方已经安装了3dmax,也装了插件,为什么一直显示没有插件?

答:主要是联动2018版本,然后插件在模方安装时候,会有选项自动安装联动插件,SketchUp(建议版本为2019),3dsMax(建议版本为2018) 模方是一款针对实景三维模型的冗余碎片、…

SpringBoot框架如何接入RocketMQ?

目录 一、SpringBoot框架介绍 二、RocketMQ介绍 三、RocketMQ的应用场景 四、SpringBoot框架如何接入RocketMQ 一、SpringBoot框架介绍 Spring Boot是一个开源的Java框架,它基于Spring框架,旨在简化Java应用程序的开发。Spring Boot通过自动化配置和约定优于配置的原则,大…

AVFilterLink的channels设置

下面这样一条命令 ffmpeg -i /Users/user/video/mp4/output.wav -ac 1 /Users/user/video/mp4/output1.wav 我们会形成下面这样的图 图1 现在有个问题link4的channel怎么设置的? static int pick_format(AVFilterLink *link, AVFilterLink *ref){link->cha…

猫头虎分享已解决Bug || Node.js安装失败Error: unable to connect to https://nodejs.org/猫头虎

猫头虎分享已解决Bug || Node.js安装失败Error: unable to connect to https://nodejs.org/猫头虎 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — …

JVM的垃圾回收

JVM简介 JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。 虚拟机:是指通过软件模拟的具有完整硬件功能、运行在一个完全隔离的环境中完整计算机系统 1.JVM的内存区域划分 jvm是一个java进程 每一个java进程就是一个jvm实例 一个进程运行过程中 就要从操作系…

VscodeC/C++环境配置

引言 vscode是一款非常好用的编辑器,集成了大量的插件,具有很高的自由度,因此广受大家的喜爱。但是他本身是不带编译器的,因此如果要使用vscode来编译C/C程序的话,我们需要额外安装编译器并且为vscode配上环境。 编译…

一文教会你lambda表达式

引言 在现代编程中,Lambda表达式(也称为匿名函数或闭包)已经成为了一种非常流行的编程范式。它允许我们定义简短、一次性的函数对象,而无需显式地定义它们。在C11及之后的版本中,Lambda表达式得到了官方的支持&#x…

梦幻西游12门派复古怀旧 单机版 安装简单,云盘下载哦

做游戏开发的朋友,可以多参考里面的设计思想,真的不错。 梦幻西游12门派复古怀旧 单机版 安装简单,云盘下载哦 游戏大小: 支持系统:win7、win10 64位 特色:简化安装,非常容易。 重新整盒高…

Ubuntu下halcon软件的下载安装

由于工作需求,点云配准需要使用halcon进行实现,并且将该功能放入QT界面中 1.下载halcon 进入halcon官网进行下载 官网链接:https://www.mvtec.com/products/halcon/ 注意:要注册登陆之后才能进行下载 接着点击Downloads->H…

MouseBoost PRO mac中文激活版:专业鼠标助手

MouseBoost PRO mac鼠标性能优化软件,以其强大的功能和智能化的操作,助您轻松驾驭鼠标,提高工作效率。 MouseBoost PRO支持自定义快捷键设置,让您轻松实现快速切换应用程序、打开特定文件、调节音量大小等操作。自动识别窗口功能则…

240多道!Go开发岗位面试题合集(含答案)

随着今年互联网寒潮环境的影响,找工作的人也将达到顶峰,今天给大家分享一份《Go开发工程师超高频面试真题》,一共有240多道面试真题,希望能够帮助大家在面试中,少走一些弯路、更快拿到offer! 内容展示 GO 基…

Dreamweaver 2021 for Mac 激活版:网页设计工具

在追求卓越的网页设计道路上,Dreamweaver 2021 for Mac无疑是您的梦幻之选。这款专为Mac用户打造的网页设计工具,集强大的功能与出色的用户体验于一身。 Dreamweaver 2021支持多种网页标准和技术,让您能够轻松创建符合现代网页设计的作品。其…

[Algorithm][BFS][拓扑排序][课程表][课程表Ⅱ][火星词典] + BFS解决拓扑排序原理 详细讲解

目录 0.原理讲解1.有向无环图2.AOV网3.拓扑排序4.实现拓扑排序5.如何建图? 1.课程表1.题目链接2.算法原理详解3.代码实现 2.课程表 II1.题目链接2.算法原理详解3.代码实现 3.火星词典1.题目链接2.算法原理详解3.代码实现 0.原理讲解 1.有向无环图 有向无环图&#…

基于Django图像识别系统毕业设计(付源码)

前言:Django是一个由Python编写的具有完整架站能力的开源Web框架,Django本身基于MVC模型,即Model(模型)View(视图) Controller(控制器)设计模式,因此天然具有…

【抽样调查】分层抽样上

碎碎念:在大一大二时听课有的时候会发现听不太懂,那时候只觉得是我自己的基础不好的原因,但现在我发现“听不懂”是能够针对性解决的。比如抽样调查这门课,分析过后我发现我听不懂的原因之一是“没有框架”,一大堆知识…

【使用ChatGPT的API之前】OpenAI API提供的可用模型

文章目录 一. ChatGPT基本概念二. OpenAI API提供的可用模型1. InstructGPT2. ChatGPT3. GPT-4 三. 在OpenAI Playground中使用GPT模型-ing 在使用GPT-4和ChatGPT的API集成到Python应用程序之前,我们先了解ChatGPT的基本概念,与OpenAI API提供的可用模型…

情感分类学习笔记(1)

文本情感分类(二):深度学习模型 - 科学空间|Scientific Spaces 一、代码理解 cw lambda x: list(jieba.cut(x)) #定义分词函数 您给出的代码定义了一个使用 jieba 分词库的分词函数。jieba 是一个用于中文分词的 Python 库。该函数 cw 是…

FTTR介绍

概念 FTTR(Fiber to The Room)是一种新型的光纤接入技术,它将光纤信号传输到室内的一个通信网络方案。在FTTR网络中,光纤到达建筑物内的分配盒后,通过铜缆或其他传输介质进入室内各个房间,为用户提供网络服…