C++ 构造函数 初始化列表
2013-08-08 08:19 古悦 阅读(195) 评论(0) 收藏 举报构造函数初始化列表:
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++初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。
所以 如果使用初始化列表时,应该按照声明的顺序进行罗列,以免产生意想不到的错误。
浙公网安备 33010602011771号