码迷,mamicode.com
首页 > 其他好文 > 详细

条款十三: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同

时间:2014-08-11 14:49:42      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   数据   ar   问题   div   

template<class t>
class array {
public:
  array(int lowbound, int highbound);
  ...

private:
  vector<t> data;               // 数组数据存储在vector对象中
                                // 关于vector模板参见条款49

  size_t size;                  // 数组中元素的数量

  int lbound, hbound;           // 下限,上限
};

template<class t>
array<t>::array(int lowbound, int highbound)
: size(highbound - lowbound + 1),
  lbound(lowbound), hbound(highbound),
  data(size)
{}

array类实现了一个数组,该数组可以指定起始下标,而不是一定从0开始

类成员是按照它们在类里被声明的顺序进行初始化的,和它们在成员初始化列表中列出的顺序没一点关系。用上面的array模板生成的类里,data总会被首先初始化,然后是size, lbound和hbound,data中的成员个数不清楚。所以初始化列表中成员列出的顺序和它们在类中声明的顺序相同,否则可能会有部分成员没有初始化成功

如果你深究一下的话,会发现只是非静态数据成员的初始化遵守以上规则。静态数据成员的行为有点象全局和名字空间对象,所以只会被初始化一次(详见条款47)。另外,基类数据成员总是在派生类数据成员之前被初始化,所以使用继承时,要把基类的初始化列在成员初始化列表的最前面(调用基类构造函数)。(如果使用多继承,基类被初始化的顺序和它们被派生类继承的顺序一致,它们在成员初始化列表中的顺序会被忽略。使用多继承有很多地方要考虑。条款43关于多继承应考虑哪些方面的问题提出了很多建议。)

条款十三: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同,布布扣,bubuko.com

条款十三: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同

标签:style   blog   color   使用   数据   ar   问题   div   

原文地址:http://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3904510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!