c++ 类的初始化列表总结

写在前面

c++类的初始化列表总结

参考

几个要点

类的初始化列表的作用:
显示的初始化类的成员变量。如果不使用初始化列表显示的初始化成员变量,成员变量也是会被初始化的。

使用初始化列表:
对于基本数据类型以及指针类型,使用初始化列表显示初始化和在构造函数体内赋值达到的效果以及效率基本是一样的。
对于非基本数据类型,比如自定义的类,结构体等,使用初始化列表将调用该对象对应的构造函数进行构造。

不使用初始化列表:
对于基本数据类型以及指针类型同上。
对于非基本类型:将按照声明的顺序调用对象的默认无参构造函数进行初始化。在进入相应的构造函数体当中之后,如果有对于该成员变量的赋值操作,将产生临时对象再赋值给该成员。将造成效率上的损失。

对于自定义的类型,最好采用初始化列表的方式进行构造,提升效率。
如果成员变量是非基本类型(非指针类型)且也没有相应的默认无参构造函数,这个时候必须使用初始化列表进行初始化,调用相应的存在的构造函数。否则编译器将调用该对象的默认无参构造函数,但是找不到,此时报错。
对于const成员或引用类型的成员。因为const对象或引用类型只能初始化,不能对他们赋值。所以也只能在初始化列表当中初始化。


初始化列表当中的顺序不是实际成员变量初始化的顺序。实际初始化的顺序是在类当中声明成员变量的顺序。初始化列表只是告诉编译器应该调用该对象的哪个相应的构造函数进行构造。

猜你喜欢

转载自blog.csdn.net/zhc_24/article/details/81545573
今日推荐