C++中的初始化列表
构造函数体赋值
通过类名创建一个对象的时候,编译器会通过调用类中的构造函数来给对象中的各个成员变量赋予一个合适的初始值。
class Test{
public:
Test(int a,int b,int c){
_a = a;
_b = b;
_c = c;
}
int _a;
int _b;
int _c;
}
上述的操作虽然是给每个成员变量都赋予了一个初值,但是构造函数中的语句是赋值的操作,并不能将其称之为初始化操作。初始化只能继续一次初始化,但是在构造函数内可以进行多次重复的赋值操作。
初始化列表
以一个冒号开始,接着就是一个以逗号分隔的数据成员列表,每个成员列表后面跟一个放在中括号中的初始值或者表达式。
class Test{
public:
Test(int _a,int _b,int _c):_a(a),_b(b),_c(c){
}
int _a;
int _b;
int _c;
}
注意:
- 每个数据成员只能够在初始化列表中出现一次
- 一个类中包含一下的一些成员函数的时候,只能将其放在初始化列表中:
1.引用成员变量,因为引用变量在定义的时候就需要进行初始化操作
2.const修饰的成员变量,被const修饰的变量在生命的时候就需要要给定一个初始值,后续该值不可以被改变
3.自定义类型的成员,在实例化一个类对象的时候,要是有默认的构造函数可以不放在初始化列表中,但是如果用户自定义了类的构造函数,那么在定义该对象的时候就需要将其放在初始化列表中进行初始化操作。
4.这里的默认构造函数包括(编译器自动生成的默认构造函数,不带参数的构造函数以及全缺省的构造函数)
在定义变量的时候就必须进行初始化的变量类型,就需要放到初始化列表中来进行初始化。
初始化列表的使用
- 在初始化列表中,对应自定义的类型可以提高程序的效率,使用初始化列表只需要调用一次类的构造函数,而在构造函数体内进行初始化就需要调用一次类的构造函数,还要调用一次类型赋值构造函数。
- 成员变量在类中声明的次序就是其在初始化列表中的初始化的顺序,与其在初始化列表中的先后顺序是没有关系的。

浙公网安备 33010602011771号