c++中的初始化列表

一、初始化的两种方式

1. 常规赋值法

一种是较为常规的初始化如下:

cpp 复制代码
Person(int a, int b, int c) {
	this->a = a;
	this->b = b;
	this->c = c;
}

由于过于习以为常,所以这里就不再赘述。

2. 初始化列表法

这种方法相比于直接赋值法,成员变量a、b、c在进入构造函数体之前就已经被初始化了。

cpp 复制代码
class Person{
...
	int a;
	int b;
	int c;
...
Person(int a, int b, int c) :a(a), b(b), c(c) {}
}

这种方法的效率会更高一些,使用过程中需要注意的地方如下:

  • 只能在构造函数里使用该语法,可以给所有成员变量设置++初始化++参数;
  • 成员的构造顺序和在初始化列表中的顺序无关,与++在类中声明顺序++有关;

**注:**第二条的意思是,不管我在初始化列表中体现的是"a b c"还是"c a b",成员的构造顺序都是"a b c",这是由我在类中声明的顺序有关的。

  • const类型和引用类型在初始化参数列表中初始化。
相关推荐
Lhan.zzZ5 小时前
在 Visual Studio 2022 中打造可扩展的动态链接库模块:从零搭建到原理解析
开发语言·c++·visual studio
LuminousCPP6 小时前
数据结构-双向循环链表
c语言·数据结构·笔记·链表
白狐_7987 小时前
408数据结构第5章:树与二叉树②——遍历、线索树、森林与哈夫曼
数据结构·算法·深度优先
zh路西法7 小时前
【3D SLAM源码解读系列】(二)Small_gicp——5 个积木搭出最优点云配准
c++·pcl·icp·fastgicp·smallgicp·gicp
Jasmine_llq8 小时前
《P15800 [GESP202603 六级] 选数》
数据结构·long long·逆序线性 dp·从后往前推导·转移严格遵循题意·防止总和溢出·复杂度on
fpcc9 小时前
ubuntu26环境下的开发环境安装处理
c++·并行编程
疯狂打码的少年9 小时前
【数据结构】串(字符串):基本概念与存储
数据结构·笔记
纵有疾風起10 小时前
线性表的定义与基本操作 — 从逻辑结构到 ADT 接口
数据结构·算法·408·线性表·adt
charlie11451419110 小时前
Cinux · 第一次跳进 Ring 3:用户态与特权隔离
开发语言·c++·操作系统·开源项目
别动我齐刘海10 小时前
机器学习基础2——C++、OpenCV、点云、Open3D
c++·人工智能·opencv·机器学习·计算机视觉·机器人·ros2