首页 > 编程语言 > 详细

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

时间:2016-08-23 16:45:19      阅读:271      评论:0      收藏:0      [点我收藏+]

一、在下列情况下,必须使用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可能会还没初始化。

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

原文:http://www.cnblogs.com/linux-hp/p/5799408.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!