当前位置: 首页 > article >正文

C++ ——— 构造函数中的初始化列表

目录

前言

初始化列表的语法

初始化列表的意义

初始化列表的实际作用


前言

对于初始化列表的学习,同样以日期类来举例说明

C++ ——— 完善日期类-CSDN博客


初始化列表的语法

代码演示:

Data(int year = 1, int month = 1, int day = 1)
	:_year(year)
	,_month(month)
	,_day(day)
{}

初始化列表可以写在构造函数中,以冒号开始,用逗号分割

代码验证:

这是的初始化列表就充当了构造函数初始化的功能,并且可以和构造函以前初始化的语法一起使用

代码演示:

Data(int year = 1, int month = 1, int day = 1)
	:_year(year)
	,_month(month)
{
	_day = day;
}

初始化列表的意义

例如 const 修饰的成员变量,必须值定义的时候给值,否则在构造函数中复制就会报错

但初始化列表就能解决以上问题

声明了一个引用也是同样的道理,必须值定义的时候给值,所以也可以在初始化列表的时候给值

代码演示:

class A
{
public:
	A(int c, int& i)
		:_c(c)
		,_ri(i)
	{}

	void Print()
	{
		cout << "_c = " << _c << endl << "_ri = " << _ri << endl;
	}

private:
	const int _c;
	int& _ri;
};

代码验证:


初始化列表的实际作用

代码演示:

class A
{
public:
	A(int capacity)
	{
		_a = (int*)malloc(sizeof(int) * capacity);

		if (_a == nullptr)
		{
			perror("malloc fail");
			exit(-1);
		}
	}

private:
	int* _a;
};

class Double_A
{
public:
	Double_A(int all_capacity)
	:_a1(all_capacity)
	,_a2(all_capacity)
    {}

private:
	A _a1;
	A _a2;
};

在 A 这个类中,构造函数没有缺省值,那么在 Double_A 这个类中生成声明两个 A 类时就会报错

初始化列表就能解决这个问题,就在初始化列表的时候对 _a1 和 _a2 进行给值

代码验证:


http://www.kler.cn/a/465845.html

相关文章:

  • Linux高并发服务器开发 第八天(makefile的规则 wildcard/patsubst函数 普通变量/自动变量/其他关键字)
  • C# 设计模式(创建型模式):原型模式
  • 电子应用设计方案84:智能 AI衣柜系统设计
  • 什么是 Azure OpenAI ?了解微软 Azure OpenAI 和 OpenAI 的关系
  • RabbitMQ基础篇之Java客户端 消息转换器
  • 解决移动端v-html繁体字标点符号上下剧中问题
  • 区块链技术为电商API接口带来的数据安全革新
  • Django REST framework 源码剖析-视图类详解(Views)
  • 麒麟操作系统服务架构保姆级教程(七)Nginx+PHP+Mysql部署服务
  • 如何二次封装组件(vue3版本)
  • npx和npm和pnpm的异同
  • 基于SpringBoot在线竞拍平台系统功能实现十三
  • 1.3 距离度量
  • go项目zero框架中用gentool解决指定MYSQL表生成结构体被覆盖的解决方案
  • 【网络协议】开放式最短路径优先协议OSPF详解(二)
  • dbeaver导入导出数据库(sql文件形式)
  • 深入探讨爬虫的核心理念:设计原则与关键技术
  • 关于Zotero
  • 高阶无源和有源滤波器
  • 【docker】笔记