初始化列表
构造函数的执行可以分成两个阶段:初始化阶段和计算阶段(初始化阶段先于计算阶段)。
l 初始化阶段:全部的成员都会在初始化阶段初始化。
l 计算阶段:一般是指用于执行构造函数体内的赋值操作。
构造函数除了参数列表和函数体之外,还可以有初始化列表。
初始化列表的语法:
类名(形参列表):成员一(值一), 成员二(值二),..., 成员n(值n)
{......}
注意:
1)如果成员已经在初始化列表中,则不应该在构造函数中再次赋值。
2)初始化列表的括号中可以是具体的值,也可以是构造函数的形参名,还可以是表达式。
3)初始化列表与赋值有本质的区别,如果成员是类,使用初始化列表调用的是成员类的拷贝构造函数,而赋值则是先创建成员类的对象(将调用成员类的普通构造函数),然后再赋值。
4)如果成员是类,初始化列表对性能略有提升。
5)如果成员是常量和引用,必须使用初始列表,因为常量和引用只能在定义的时候初始化。
6)如果成员是没有默认构造函数的类,则必须使用初始化列表。
7)拷贝构造函数也可以有初始化列表。
8)类的成员变量可以不出现在初始化列表中。
9)构造函数的形参先于成员变量初始化。
标签:初始化,成员,列表,阶段,构造函数,赋值 From: https://www.cnblogs.com/tgfoven/p/17113867.html