构造函数初始化顺序问题

[复制链接]
 楼主| gxgclg 发表于 2012-7-24 21:39 | 显示全部楼层 |阅读模式
遇到这样一个问题,代码如下:
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;
}
}
请问谁能解释一下吗?
无冕之王 发表于 2012-7-24 21:50 | 显示全部楼层
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])
-----
初始化的执行顺序跟 初始化的先后顺序没有关系,

初始化的执行顺序依赖于 这些变量在类中的声明顺序。
sinadz 发表于 2012-7-24 21:58 | 显示全部楼层
构造函数的调用就是像堆栈一样,都是一层一层的调用。
先内里到外 像这样
(((1)2)3)
dfsa 发表于 2012-7-24 22:13 | 显示全部楼层
构造函数的初始化跟继承的父类顺序有关
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

177

主题

1653

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部