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。为什么?您是否应该假设存在任何变量初始化的顺序?
答案 0 :(得分:5)
基本成员初始化的顺序是成员变量在类定义中出现的顺序。
最好不要依赖它。 (这样做会使代码非常脆弱。)