C++构造函数的选择
构造函数用来初始化类对象。构造函数有好几种,在编程时如何选择不同的构造函数呢?做个总结
一、默认构造函数
默认构造函数是在程序员没有声明任何构造函数的时,编译器为了初始化类对象自己进行的默认构造函数。既然是是编译器为了方便自己做的构造函数,它在初始化时就没有那么的智能,一般有两种:
1)如果类内有初始值,即用此值来初始化;
2)使用默认初始化值,一般int 型初始化为0,字符串初始化为空串。
但是有些类不能使用默认构造函数:
1)对于类内的内置类型和复合类型(如指针、数组)则是未定义的,所以默认构造函数只适用于简单类的构造函数。
2)若类中包含其他类的成员且成员也没有默认构造函数,则编译器无法初始化该成员。
二、构造函数初始化列表
Home::Home(int x): num(x),desk(x),room(num){}
初始化的顺序和初始化列表的顺序无关,但是尽量按照类内定义的顺序依次初始化;
尽量不要用类的成员初始化其他变量;
区别列表初始化所占的计算资源和存储资源都要少于赋值操作,后者要先初始化再赋值。对于const和引用要先初始化,不能赋值。
三、在类的外部定义构造函数