当前位置: 首页 > 科技观察

EasyC++,成员初始化列表

时间:2023-03-21 10:23:20 科技观察

成员初始化列表除了使用构造函数来初始化类成员外,C++还提供了另一种初始化方法,称为成员初始化列表。我们假设Classy是一个类,mem1,mem2,mem3都是这个类的数据成员,那么类构造函数可以写成:Classy::Classy(intn,intm):mem1(n),mem2(0),mem3(n*m+2){...};上面的代码将mem1初始化为n,将mem2初始化为0,将mem3初始化为n*m+2。这些初始化是在创建对象时,在花括号中的内容被执行之前完成的。有几点需要注意:这种格式只能用于构造函数必须使用这种格式来初始化非静态const数据成员(C++11之前)必须使用这种格式来初始化引用数据成员数据成员的顺序它们在类中以相同的顺序被初始化和定义,而不管它们在初始化列表中的排列顺序如何。C++11的类内初始化C++11允许我们直接给成员变量赋值:classClassy{intmem1=10;constintmem2=20;};这相当于在构造函数中使用成员初始化列表:Classy::Classy():mem1(0),mem2(20){...}我们直接在类中初始化后,也可以在成员初始化列表中重写:Classy::Classy(intn):mem1(n){...}在这种情况下,mem1的值被n替换。