Inside The C++ Object Model(Note):Member Initialization List

 为了让程序顺利通过编译,在下列四种情况中你必须使用成员初始化列表:

1.当初始化一个reference member时;

2.当初始化一个const member时;

3.当调用一个base class 的constructor,而它拥有一组参数;

4.当调用一个member class的constructor,而它拥有一组参数;

 

 注意:成员初始化列表并不是一组函数调用,编译器会一一操作初始化列表,以适当次序在

constructor之内安插初始化操作,并且是在任何显式的用户代码之前。

这里总的需要留意两点:

第一个:member object的初始化,最好放到初始化列表里面。若放置于构造器中,则会产生

临时的object0,初始化之,在做赋值运算给object,然后object0自行销毁,期间耗时耗力。若

置于初始化列表,则编译器会在构造函数中,user code之前,调用object的构造函数,予以初

始化。

      

第二个:初始化列表的初始化次序。初始化次序和member在类中的声明次序一致。相互关联的

member,需要十分留意初始化列表中,其中依赖的次序。解决的办法:把其中一部分使用初始

化列表初始化,而另一部分放置到构造函数中使用user code予以表达,这样即便次序存在依赖,

也会只“先执行合成的,再执行user的code”。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值