初始化列表问题

cha*_*255 0 c++

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初始化.为什么?你不应该假设有任何变量初始化的顺序吗?

Bat*_*eba 5

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

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