EasyC++,成员初始化列表

开发 后端
除了可以使用构造函数对类成员进行初始化之外,C++还提供了另外一种初始化的方法,叫做成员初始化列表。

 [[442028]]

成员初始化列表

除了可以使用构造函数对类成员进行初始化之外,C++还提供了另外一种初始化的方法,叫做成员初始化列表。

我们假设Classy是一个类,而mem1,mem2和mem3都是这个类的数据成员,那么类构造函数可以写成:

  1. Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) { 
  2.     ... 
  3. }; 

上述代码将mem1初始化为n,将mem2初始化为了0,mem3初始化成了n*m+2。这些初始化工作是对象创建是完成的,并且在执行花括号中的内容之前。

有这么几点需要注意:

  • 这种格式只能用于构造函数
  • 必须用这种格式初始化非静态const数据成员(C++11之前)
  • 必须用这种格式初始化引用数据成员

数据成员被初始化的顺序和它们在类中定义的顺序相同,和初始化列表中的排列顺序无关。

C++11的类内初始化

C++11当中允许我们直接对成员变量进行赋值:

  1. class Classy { 
  2.     int mem1 = 10; 
  3.     const int mem2 = 20; 
  4. }; 

这和在构造函数当中使用成员初始化列表等价:

  1. Classy::Classy() : mem1(0), mem2(20) {...} 

我们在类当中直接初始化之后,我们也可以在成员初始化列表当中进行覆盖:

  1. Classy::Classy(int n) : mem1(n) {...} 

在这种情况下,mem1的值会被替换成n。

责任编辑:武晓燕 来源: Coder梁
相关推荐

2021-12-12 18:13:54

C++This指针

2021-12-29 20:31:40

C++多态指针

2021-12-09 10:56:50

函数C++原型

2021-11-26 00:03:20

C++编译常量

2021-12-08 10:43:09

C++实现

2021-12-30 14:58:58

C++函数动态

2021-12-10 10:45:36

C++函数Stock

2021-10-26 00:19:51

C++结构体存储

2021-11-27 11:50:09

C++静态持续

2021-11-09 10:38:16

C++Const指针

2021-12-11 19:02:03

函数C++对象

2021-11-10 10:48:36

C++函数指针

2023-11-12 23:08:17

C++初始化

2021-12-15 10:25:57

C++运算符重载

2022-01-04 16:35:42

C++Protected关键字

2021-12-05 18:20:42

C++空间特性

2021-10-26 15:36:17

C++枚举值类型

2021-10-27 16:27:20

C++指针操控

2021-11-26 10:56:28

C++存储持续性

2021-12-16 10:40:11

C++运算符重载
点赞
收藏

51CTO技术栈公众号