深入探索C++对象模型->2.4成员们的初始化队伍

一、在下列情况下,必须使用member initialization list

  1、当初始化一个reference时;

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

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

  4、当调用一个member class 的constructor,而它拥有一组参数时。

  在这四种情况下,初始化应该位于初始化列表,否则效率不高。

二、另一个常见问题是:能否调用一个member function以设定一个member的初值?

  答案是yes,下面是一段代码转换:

X::X(int val)
    : i(xfoo(val)), j(val)
{}
//实际上被转换如下
X::X(/*this pointer, */ int val)
{
    i = this->xfoo(val);
    j = val;
}

在此转换中,this指针已经被建构妥当。但是最好将function放于constructor体内,因为它所用到的members可能会还没初始化。

转载于:https://www.cnblogs.com/linux-hp/p/5799408.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值