DoubleVector::DoubleVector(unsigned int buffer) : len(buffer), data(new base_int[len]), start(len / 2), end(start)
Run Code Online (Sandbox Code Playgroud)
即使缓冲区设置为50,这也会为start和end产生非常大的值.len包含正确的值50但start和end都包含超过一百万的值.然后我改为代码到以下.
DoubleVector::DoubleVector(unsigned int buffer) : len(buffer), data(new base_int[len]), start(buffer / 2), end(start)
Run Code Online (Sandbox Code Playgroud)
现在,开始和结束都用正确的值25初始化.为什么?你不应该假设有任何变量初始化的顺序吗?