【C++ 类和对象】初始化列表

news2024/11/14 23:23:58

文章目录

      • 1. 构造函数体赋值
      • 2. 初始化列表🔍

1. 构造函数体赋值

🍎① 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值

class Date
{
public:

// 构造函数
Date(int year, int month, int day)
{
	 _year = year;
	 _month = month;
	 _day = day;
}
 
private:
	 int _year;
	 int _month;
	 int _day;
};

在这里插入图片描述



2. 初始化列表🔍

在这里插入图片描述

🍎 🔍可以简单的理解为: _year = year,就是拿括号里面的内容进行赋值。

🍎 🔍 (int*) malloc( sizeof(int) * 10) 括号里面也可以写这个表达式🖊。

class Date
{
public:

	Date(int year, int month, int day)
	 : _year(year)	  
	 , _month(month)
	 , _day(day)
	 {}
 
private:
	 int _year = 2024;	// 缺省值,实际上是给初始化列表的
	 int _month;
	 int _day;
 }
  • 【注意】🐧
    在这里插入图片描述

class A
{
public:
	A(int a)
		:_a(a)
	{}
private:
	int _a;
};

class B
{
public:
	B(int a, int ref)
		: _aobj(a)
		, _ref(ref)
		, _n(10)
		
	{}

private:
	A _aobj; // 没有默认构造函数
	int& _ref; // 引用
	const int _n; // const 
};

int main()
{
	B b1(1,2);

	return 0;
}

  • 🐧 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表初始化。 会先执行初始化列表,然后才会执行 {}构造函数体里面的内容。
class Time
{
public:

	Time(int hour = 0)
		:_hour(hour)
	{
		cout << "Time()" << endl;
	}
private:
	int _hour;
};

class Date
{
public:
	Date(int day)
	{}
private:
	int _day;
	Time _t;
};

int main()
{
	Date d(1);

	return 0;
}

  • 🐧 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关

class A
{
public:
	A(int a)
		:_a1(a)
		, _a2(_a1)
	{}

	void Print() {
		cout << _a1 << " " << _a2 << endl;
	}
private:
	int _a2;
	int _a1;
};
int main() {
	A aa(1);
	aa.Print();
}

  • 🍎 初始化列表 (显式的调用自定义类型的构造
    在这里插入图片描述
class Time
{
public:

	Time(int hour, int minutes)
	{
		_hour = hour;

		_minutes = minutes;
		cout << "Time()" << endl;
	}
private:
	int _hour;
	int _minutes;
};

class Date
{
public:
	Date(int day)
		: _day(day)
		, _t(11,22)
	{
		
	}
private:
	int _day;
	Time _t;
};

int main()
{
	Date d(1);

	return 0;
}

在这里插入图片描述

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

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

相关文章

面试题:如何避免索引失效?

(1) 范围条件查询 (2) 不要在索引上使用函数运算, 否则索引也会失效. 比如在索引上使用切割函数, 就会使索引失效. (3) 字符串不加引号, 造成索引失效. (4) 尽量使用索引覆盖, 避免 select *, 这样能提高查询效率. 如果索引列完全包含查询列, 那么查询的时候把要查的列写出来…

一文教你如何实现并发请求的失败自动重试及重试次数限制

需求 在并发接口请求的时候&#xff0c;能够自动对失败的请求进行重发尝试&#xff08;超过指定重试次数则不再重试&#xff09;,并将最终的结果返回&#xff08;包含每个请求是否成功、返回结果&#xff09; 核心思路 代码实现 使用案例 为了演示我们代码的最终实现效果&a…

期权交易单位是什么?期权懂新手必看!

今天带你了解期权交易单位是什么&#xff1f;很多对期权还不太熟悉的朋友&#xff0c;不知道期权的单位是什么&#xff0c;下面小编就来告诉你期权的交易单位到底是什么&#xff1f; 期权交易单位是什么&#xff1f; 50ETF期权的交易单位&#xff0c;用大白话来说&#xff0c;…

从盛世到衰落,历史上八大强国的兴衰与现代地位!

人类文明史悠久&#xff0c;从远古时代至今日&#xff0c;世界舞台上曾经涌现出许多强盛的帝国。它们在自己的黄金时代&#xff0c;曾经无人能敌&#xff0c;不论是在军事、经济还是文化上都独领风骚。然而&#xff0c;无论多么强大的国家也难逃“兴盛必衰”的命运。今天&#…

【文档+源码+调试讲解】精准扶贫管理系统

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了精准扶贫管理系统的开发全过程。通过分析精准扶贫管理系统管理的不足&#xff0c;创建了一个计算机管理精准扶贫管理系统的方案。文章介绍了精准扶贫管理系统的系…

【Week-R3】天气预测,引入探索式数据分析方法(EDA)

文章目录 1. 导入模块2. 导入数据3.探索式数据分析方法&#xff08;EDA&#xff09;3.1 数据相关性探索3.2 是否会下雨3.3 地理位置与下雨的关系3.4 湿度和压力对下雨的影响3.5 气温对下雨的影响 4.数据预处理4.1 处理缺损值4.2 构建数据集 5 预测是否会下雨5.1 构建神经网络5.…

JAVAEE值之网络原理(1)_传输控制协议(UDP)、概念、特点、结构、代码实例

前言 在前两节中我们介绍了UDP数据报套接字编程&#xff0c;但是并没有对UDP进行详细介绍&#xff0c;本节中我们将会详细介绍传输层中的UDP协议。 一、什么是UDP&#xff1f; UDP工作在传输层&#xff0c;用于程序之间传输数据的。数据一般包含&#xff1a;文件类型&#xff0…

您对薪资待遇是否满意?没证据怎么办?这样做很可能会补上来!

您对薪资待遇是否满意&#xff1f;没证据怎么办&#xff1f; 这样做很可能会补上来&#xff01; 您有时可能对自己的工资或福利待遇感到不满意&#xff1a;感到为何我付出的不比别人少&#xff0c;但是工资待遇总是比别人低&#xff0c;是不是觉得很不服气&#xff1f;那么不服…

K8s 卷快照类

卷快照类 卷快照类 这个警告信息通常出现在使用 kubectl 删除 Kubernetes 集群资源时&#xff0c;如果尝试删除的是集群作用域&#xff08;cluster-scoped&#xff09;的资源&#xff0c;但指定了命名空间&#xff08;namespace&#xff09;&#xff0c;就会出现这个警告。 集…

leetcode刷题-二叉树02

代码随想录二叉树part02|102.层序遍历、226.翻转二叉树、101.对称二叉树 102.层序遍历--十题226.翻转二叉树101.对称二叉树 102.层序遍历–十题 代码随想录文档讲解 LeetCode102 图论中的深度搜索和广度搜索分别对应二叉树中的递归遍历和层序遍历。 3/ \9 20/ \15 7返回层序…

ubuntu 20.04禁止自动更新内核驱动、显卡驱动(使用命令行)

本文目录 一、禁止更新内核1.1 查看当前内核1.2 查看安装的内核1.3 根据需求&#xff0c;使用hold参数禁止固定内核1.4 查询被锁定不更新软件包的状态 二、禁止更新显卡驱动2.1 查看安装的显卡驱动2.2 查看详细的详细的显卡信息2.3 禁止显卡驱动更新2.4 查询显卡是否设置成功 前…

记录大三上学期大数据课程设计:基于Hadoop和Spark的中文手写数字实时识别系统

我整理好了两个百度网盘链接&#xff0c;一个是模型文档和数据&#xff0c;一个是镜像&#xff0c;下载、导入虚拟机即可运行。 github地址&#xff1a;Li-Jihong/big-data: 用来记录大三上学期大数据课程设计&#xff1a;基于Hadoop和Spark的中文手写数字实时识别系统 (githu…

c# 二维图形绘制实践

1.等边三角形 1.1 概述 1.2 代码 using System; using System.Drawing; using System.Windows.Forms;public partial class TriangleForm : Form {public TriangleForm(){//InitializeComponent();// 确保窗体大小足够大&#xff0c;以容纳三角形 this.ClientSize new Siz…

计算机网络(1) OSI七层模型与TCP/IP四层模型

一.OSI七层模型 OSI 七层模型是国际标准化组织ISO提出的一个网络分层模型&#xff0c;它的目的是使各种不同的计算机和网络在世界范围内按照相同的标准框架实现互联。OSI 模型把网络通信的工作分为 7 层&#xff0c;从下到上分别是物理层、数据链路层、网络层、传输层、会话层、…

小魔推-短视频矩阵批量创作一键分发同城引流工具

​小魔推是一款短视频营销裂变推广工具&#xff0c;主要服务于想做短视频营销的实体商家&#xff0c;通过BGC、PGC、UGC的打造帮助商家实现流量裂变与转化。 其中&#xff0c;小魔推AI矩阵营销是借助AI技术帮助企业/商家搭建营销矩阵&#xff0c;让商家拥有足够多的账号、足够…

matlab-2-simulink-小白教程-如何绘制电路图进行电路仿真

以上述电路图为例&#xff1a;包含D触发器&#xff0c;时钟CLK,与非门 一、启动simulink的三种方式 方式1 在MATLAB的命令行窗口输入“Simulink”命令。 方式2 在MATLAB主窗口的“主页”选项卡中&#xff0c;单击“SIMULINK”命令组中的Simulink命令按钮。 方式3 从MATLAB…

最小二乘法原理及其代码实现

一、最小二乘法原理 假设目前我们有一些数据&#xff0c;x是输入&#xff0c;y是与之对应的输出。现在想利用这些已有的数据&#xff0c;从中发现出规律&#xff0c;来预测没有出现过的输入会产生什么样的输出。 假设系统为单输入单输出系统&#xff0c;我们想在这个系统里找到…

【TB作品】MSP430F5529 单片机,数字时钟设计与实现,整点时通过蜂鸣器播放音乐进行报时

基于单片机的数字时钟设计与实现 作品名称 基于MSP430单片机的OLED显示数字时钟 作品功能 本作品实现了一个具有时间显示和整点报时功能的数字时钟。通过OLED屏幕显示当前时间&#xff0c;用户可以通过按键设置时间&#xff0c;并在整点时通过蜂鸣器播放音乐进行报时。 作…

Serif Affinity 2.5 (macOS, Windows) - 专业创意软件

Serif Affinity 2.5 (macOS, Windows) - 专业创意软件 Affinity Designer 2, Affinity Photo 2, Affinity Publisher 2 请访问原文链接&#xff1a;Serif Affinity 2.5 (macOS, Windows) - 专业创意软件&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主…

如何优化仓库布局与ERP库存管理

一、引言 随着企业规模的不断扩大&#xff0c;仓库管理和库存控制成为企业运营中不可或缺的一环。优化仓库布局和提高ERP库存管理效率&#xff0c;对于降低企业成本、提高物流效率、增强企业竞争力具有重要意义。 二、优化仓库布局 1. 分析仓库需求 在优化仓库布局之前&…