构造函数初始化列表:
1 class CTest 2 3 { 4 5 private : 6 7 int x; 8 9 int y;10 11 public:12 13 CTest()14 15 {16 17 x = 1;18 19 y =2;20 21 }22 23 CTest():x(1),y(2)24 25 {26 27 }28 29 };
1. 赋值和初始化的区别:
I:基本数据类型和复合类型(指针,引用):在初始化列表和 构造函数体内,在性能和结果上都是一致的
II:自定义类型(类类型): 性能和结果上都存在差别,因为类类型的数据成员对象在进入函数体前已经构造完成,也就是说在成员初始化列表处进行构造对象的工作,
调用构造函数,在进入函数体之后,进行的是对已经构造好的类对象的赋值,又调用个拷贝赋值操作符才能完成(如果并未提供,则使用编译器提供的默认按成员赋值行为)
2. 初始化列表的初始化顺序:
C++初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。
所以 如果使用初始化列表时,应该按照声明的顺序进行罗列,以免产生意想不到的错误。