初始化列表问题

时间:2013-11-29 15:05:59

标签: c++

DoubleVector::DoubleVector(unsigned int buffer) : len(buffer), data(new base_int[len]), start(len / 2), end(start)

即使缓冲区设置为50,这也会为start和end产生非常大的值.len包含正确的值50但start和end都包含超过一百万的值。然后我改为代码到下面。

DoubleVector::DoubleVector(unsigned int buffer) : len(buffer), data(new base_int[len]), start(buffer / 2), end(start) 

现在,使用25的正确值初始化start和end。为什么?您是否应该假设存在任何变量初始化的顺序?

1 个答案:

答案 0 :(得分:5)

基本成员初始化的顺序是成员变量在类定义中出现的顺序。

最好不要依赖它。 (这样做会使代码非常脆弱。)