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类型和引用类型在初始化参数列表中初始化。
相关推荐
mmmmath_37 小时前
LeetCode.199.二叉树的右视图
数据结构·leetcode
别动我齐刘海9 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
Shaoshing12 小时前
前缀和与差分
java·数据结构·算法·前缀和·差分
mmmmath_312 小时前
LeetCode.429.N叉树的层序遍历
数据结构·leetcode
jimy113 小时前
C++ 虚函数表:基类和派生类共用一张 vtable 吗?
开发语言·c++
爱吃提升13 小时前
Dev-C++ 5.11 C++断点调试完整教程
开发语言·c++
suhan13 小时前
【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
数据结构·后端·算法
suhan13 小时前
【数据结构】三、栈和队列:5.顺序队列(循环队列)(初始化,判空判满,入队,出队,实例)
数据结构·后端·算法
suhan13 小时前
【数据结构】三、栈和队列:3.链栈(链栈栈的初始化,判空,进栈,出栈,读取栈顶,链栈实例)
数据结构·后端·算法
suhan13 小时前
【数据结构】三、栈和队列:4.栈的应用(括号匹配,四则运算表达式求值,进制转换,递归)
数据结构·后端·算法