C++构造函数初始化变量的顺序

《C++中类的构造函数初始值列表》中提到,C++中类的构造函数初始值列表可以对类的成员进行初始化。

1 构造函数的初始化列表只是说明各变量的初始值

但是需要注意的是,构造函数的初始化列表只是说明各变量的初始值,并没有指定变量的初始化顺序。

其中,myClass类构造函数的初始化列表只是说明了变量i的初始值是1,变量j的初始值是i的值。但是并不一定是先初始化i而后初始化j。

class myClass {
public:
  int j;
  int i;
  myClass():i(1), j(i)
  {
  }
};


2变量初始化的顺序与声明顺序有关

变量的初始化顺序与构造函数的初始化列表无关,而与变量在类中声明的顺序有关。因此,在myClass类的构造函数中,先初始化j,后初始化i。此时,j的初始值未指定,而i的初始值是1。如果将myClass类中变量声明的顺序改变一下,

class myClass {
  public:
    int i;
    int j;
    myClass():i(1), j(i)
    {
    }
};

此时,构造函数先初始化i,后初始化j,i和j的初始值是1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值