EasyC++,成员初始化列表
2023-04-18 15:42:26 时间
成员初始化列表
除了可以使用构造函数对类成员进行初始化之外,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。
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!