免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1475 | 回复: 4
打印 上一主题 下一主题

[C++] 成员初始化顺序问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-23 15:00 |只看该作者 |倒序浏览
遇到这样一个问题,代码如下:
Histogram::Histogram(int l,int g,int h)
{
   
  bar=new int[h/gap];
  for(int i=0;i<h/gap;i++){
       bar[i]=0;
  }
  low=l;
  high=h;
  gap=g;
  n_small=0;
  n_large=0;
  //以上代码运行时提示出错

  /*low=l;
  high=h;
  gap=g;
  n_small=0;
  n_large=0;
  bar=new int[h/gap];
  for(int i=0;i<h/gap;i++){
        bar[i]=0;
  }*///这样没问题,仅初始化顺序改变
}
而下面代码却没有问题:
Histogram::Histogram(int l,int g,int h)
  :low(l),high(h),gap(g),n_small(0),n_large(0),bar(new int[h/gap])//这里顺序改变就没有问题。。。
{
  for(int i=0;i<h/gap;i++){
         bar[i]=0;
  }
}
请问谁能解释一下吗?。。。。。谢谢!

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [报告]
发表于 2012-07-23 15:05 |只看该作者
gap还没赋值就使用了

论坛徽章:
0
3 [报告]
发表于 2012-07-23 15:16 |只看该作者
回复 1# hujianghua2012


    基本上就是楼上说的,用初始化列表的顺序是与声明的顺序一样初始化的。

论坛徽章:
0
4 [报告]
发表于 2012-07-23 16:09 |只看该作者
1L真相帝,应该和初始化列表关系不大

论坛徽章:
0
5 [报告]
发表于 2012-07-23 19:49 |只看该作者
ou!懂了,谢谢提醒,初始化列表的初始化顺序与声明的顺序有关,因为我声明gap在bar的前面,所以初始化也在bar前面,而构造函数就不同了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP