【翁恺】11-初始化列表

initializer list

cladd Point{
private:
    const float x,y;
    Point(float xa =0.0,float ya=0.0):y(ya),x(xa){}
};
  • can initialize any type of data
    • pseudo-constructor calls for built-ins
    • no need to perform assignment within body of constructor
  • order of initialization is order of declaration
    • not the order in the list!
    • destroyed in the reverse order

y(ya),x(xa) 早于构造函数被执行。

initialization vs. assignment

Student::Student(sting s):name(s){}  // 初始化
  • initialization
  • before constructor
Student::Student(string s){name=s;} // 初始化 + 赋值 (name = s)
  • assignment
  • inside constructor
  • string must have a default constructor

initializer list 的初始化会早于构造函数的执行

assignment赋值之前已经初始化

如果类的成员是对象,未被初始化则会自动调用默认构造函数,如果没有默认构造函数则会导致错误

建议:类的成员变量都在initialization list中做初始化不要在constructor中赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理心炼丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值