#初始化列表

1.再谈构造函数

1.1构造函数的组成

构造函数包括函数体赋值初始化列表初始化

1.2函数体赋值
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}
private:int _year;int _month;int _day;
};

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

1.3初始化列表

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

class Date
{
public:Date(int year, int month, int day): _year(year), _month(month), _day(day){}private:
//成员的声明int _year;int _month;int _day;
};
特征:

1.初始化列表是每个成员定义的地方。

2.先走初始化列表(初始化),再走函数体(赋值)。

3.不管写不写,每个成员都要走初始化列表。及我们会在初始化列表中去初始所有的成员,对于自定义类型的成员,会去调用它的默认构造函数,对于内置类型不做处理,所以能用初始化列表就用初始化列表。

4.初始化列表走的顺序只与成员的声明顺序有关。所以建议初始化列表的顺序与声明的顺序保持一致。

5.每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)。

6.C++11支持给缺省值,这个缺省值是给初始化列表用的,如果显示给值了,就不用这个缺省值。

必须在初始化列表位置进行初始化的三种情况:

1.引用成员变量(引用也是只有在定义的地方才能初始化

2.const成员变量(const成员只有在定义时才能初始化

3.自定义类型成员(且该类没有默认构造时)

2.初始化列表需要与函数体混合着用

比如下面的情况

有些初始化需要去调用函数,需要用到函数体。

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

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

相关文章

Burp和Proxifier抓包微信小程序

1、Burp设置代理 2、浏览器下载证书 3、安装证书 4、Proxifier设置代理 5、Proxifier设置Proxification Rule 6、Burp查看抓包数据 打开一个小程序,可以看到WeChatAppEx的流量先经过Proxifier,再经过127.0.0.1:8080到Burp

STM32F4xx开发学习—GPIO

GPIO 学习使用STM32F407VET6GPIO外设 寄存器和标准外设库 1. 寄存器 存储器映射 存储器本身是不具有地址的,是一块具有特定功能的内存单元,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就叫做存储区映射。给内存单元分配地址之后…

NFS共享存储服务配置实践

一、NFS 1.NFS定义 NFS(Network File System)网络文件服务:基于TCP/IP传输的网络文件系统协议,NFS服务的实现依赖于RPC(Remote Process Call)远端过程调用:通过使用NFS协议,客户机…

【WP】第一届 “帕鲁杯“ - CTF挑战赛 Web 全解

Web Web-签到 考点:审计py代码 from flask import Flask, request, jsonify import requests from flag import flag # 假设从 flag.py 文件中导入了 flag 函数 app Flask(__name__)app.route(/, methods[GET, POST]) def getinfo():url request.args.get(url)i…

Day62:单调栈 LeedCode503. 下一个更大元素 II 42. 接雨水

503. 下一个更大元素 II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数…

day1Qt作业

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->resize(540,415);//窗口大小this->setFixedSize(540,415);//固定窗口大小this->setWindowTitle("QQ");//标题this->setWindowIcon(QIcon("E:\\hqyjap…

生成一个好故事!StoryDiffusion:一致自注意力和语义运动预测器必不可少(南开字节)

文章链接:https://arxiv.org/pdf/2405.01434 主页:https://storydiffusion.github.io/ 对于最近基于扩散的生成模型来说,在一系列生成的图像中保持一致的内容,尤其是那些包含主题和复杂细节的图像,是一个重大挑战。本…

文本转图表的AI工具-Chart-GPT

Chart-GPT Chart-GPT一款基于 GPT 实现的开源工具,可在几秒内,将文本快速转换为各种图表。用户只需在输入字段中输入数据说明和所需的图表类型,Chart-GPT的后台生成器即可建出多种类型的图表,包括条形图、折线图、组合图、散点图、…

学华为沟通,汇总5大项目沟通技巧

高效沟通在项目管理中的重要性不容小觑,它是确保项目顺利进行、提升团队协作效率、实现项目目标的关键因素。如果沟通不畅,往往容易导致成员对项目目标理解不一致,或信息传递不及时不准确,导致项目工作方向偏差,增加项…

Partisia Blockchain 生态zk跨链DEX上线,加密资产将无缝转移

在 5 月 1 日,由 Partisia Blockchain 与 zkCross 创建合作推出的 Partisia zkCrossDEX 在 Partisia Blockchain 生态正式上线。Partisia zkCrossDEX 是 Partisia Blockchain 上重要的互操作枢纽,其融合了 zkCross 的 zk 技术跨链互操作方案,…

ROS 2边学边练(43)-- 利用GTest写一个基本测试(C++)

前言 在ROS(Robot Operating System)中,gtest(Google Test)是一个广泛使用的C测试框架,用于编写和执行单元测试。这些测试可以验证ROS节点、服务和消息等的正确性和性能。 如果我们需要在写的包中添加测试&…

五月节放假作业讲解

目录 作业1: 问题: 结果如下 作业2: 结果: 作业1: 初始化数组 问题: 如果让数组初始化非0数会有问题 有同学就问了,我明明已经初始化定义过了,为啥还有0呀 其实这种初始化只会改变第一个…