成员函数初始化列表

举报
IM_STONE 发表于 2020/12/28 22:48:09 2020/12/28
【摘要】 1、何时必须用成员初始化列表 a)如果这个成员是个引用 b)如果是个const类型成员 c)如果你这个类是继承一个基类,并且基类中有构造函数,这个构造函数里边还有参数。 d)如果你的成员变量类型是某个类类型,而这个类的构造函数带参数时; 1234 2、使用初始化列表的优势(提高效率) 除了必须用初始化列表的场合,我们用初始化列表还有什么其他目的? 有,就是提高程序...

1、何时必须用成员初始化列表

a)如果这个成员是个引用
b)如果是个const类型成员
c)如果你这个类是继承一个基类,并且基类中有构造函数,这个构造函数里边还有参数。
d)如果你的成员变量类型是某个类类型,而这个类的构造函数带参数时;

  
 
  • 1
  • 2
  • 3
  • 4

2、使用初始化列表的优势(提高效率)

除了必须用初始化列表的场合,我们用初始化列表还有什么其他目的? 有,就是提高程序运行效率。
对于类类型成员变量xobj放到初始化列表中能够比较明显的看到效率的提升
但是如果是个简单类型的成员变量 比如 int m_test,其实放在初始化列表或者放在函数体里效率差别不大;

  
 
  • 1
  • 2
  • 3

3、初始化列表细节探究

a)初始化列表中的代码可以看作是被编译器安插到构造函数体中的,只是这些代码有些特殊;
b)这些代码 是在任何用户自己的构造函数体代码之前被执行的。所以大家要区分开构造函数中的
用户代码 和 编译器插入的 初始化所属的代码。
c)这些列表中变量的初始化顺序是 定义顺序,而不是在初始化列表中的顺序。
不建议在初始化列表中 进行 两个 都在初始化列表中出现的成员之间的初始化

以上内容是在学习kuangxiang老师的课程所得

文章来源: blog.csdn.net,作者:IM-STONE,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/doubleintfloat/article/details/106243127

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。