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类型和引用类型在初始化参数列表中初始化。
相关推荐
端平入洛14 小时前
delete又未完全delete
c++
端平入洛2 天前
auto有时不auto
c++
琢磨先生David2 天前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
哇哈哈20212 天前
信号量和信号
linux·c++
多恩Stone2 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
蜡笔小马3 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
qq_454245033 天前
基于组件与行为的树状节点系统
数据结构·c#
超级大福宝3 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
岛雨QA3 天前
常用十种算法「Java数据结构与算法学习笔记13」
数据结构·算法
weiabc3 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法