打印

构造函数初始化顺序问题

[复制链接]
1050|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝