这篇文章主要介绍了C++成员初始化列表,除了可以使用构造函数对类成员进行初始化之外,C++还提供了另外一种初始化的方法,叫做成员初始化列表。下面来看看文章的详细吧,需要的朋友可以参考一下
文章转自: 公众号:Coder梁(ID:Coder_LT)
除了可以使用构造函数Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) {
...
};类成员进行初始化之外,C++还提供了另外一种初始化的方法,叫做成员初始化列表。
我们假设Classy是一个类,而mem1,mem2和mem3都是这个类的数据成员,那么类构造函数可以写成:
Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) {
...
};上述代码将mem1初始化为n,将mem2初始化为了0,mem3初始化成了n*m+2。这些初始化工作是对象创建是完成的,并且在执行花括号中的内容之前。
有这么几点需要注意:
- 这种格式只能用于构造函数
- 必须用这种格式初始化非静态const数据成员(C++11之前)
- 必须用这种格式初始化引用数据成员
数据成员被初始化的顺序和它们在类中定义的顺序相同,和初始化列表中的排列顺序无关。
C++11的类内初始化:
C++11当中允许我们直接对成员变量进行赋值:
class Classy {
int mem1 = 10;
const int mem2 = 20;
};这和在构造函数当中使用成员初始化列表等价:
Classy::Classy() : mem1(0), mem2(20) {...}我们在类当中直接初始化之后,我们也可以在成员初始化列表当中进行覆盖:
Classy::Classy(int n) : mem1(n) {...}在这种情况下,mem1的值会被替换成n。
到此这篇关于C++成员初始化列表的文章就介绍到这了,更多相关C++成员初始化列表内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:C++成员初始化列表
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言qsort()函数的使用方法详解 2023-04-26
- Easyx实现扫雷游戏 2023-02-06
- C++ 数据结构超详细讲解顺序表 2023-03-25
- Qt计时器使用方法详解 2023-05-30
- ubuntu下C/C++获取剩余内存 2023-09-18
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
