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

本文详细解析了C++中构造函数的初始化列表的作用及其使用方式。重点介绍了成员变量的初始化过程,包括基本类型、指针类型及复杂类型的处理区别,并强调了在不同情况下使用初始化列表的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

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

参考
几个要点

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

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

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

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值