C++ 初始化列表问题

C++ 初始化列表问题,c++,C++,即使缓冲区设置为50,也会为开始和结束生成非常大的值。len包含正确的值50,但start和end都包含超过一百万的值。然后我将代码更改为以下内容 DoubleVector::DoubleVector(unsigned int buffer) : len(buffer), data(new base_int[len]), start(len / 2), end(start) 现在,start和end都用正确的值25初始化。为什么?您不应该假设变量的初始化顺序吗?基本成员的初始化顺序是成员变量在

即使缓冲区设置为50,也会为开始和结束生成非常大的值。len包含正确的值50,但start和end都包含超过一百万的值。然后我将代码更改为以下内容

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

现在,start和end都用正确的值25初始化。为什么?您不应该假设变量的初始化顺序吗?

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


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

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


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

将编译器警告级别提高到11。将编译器警告级别提高到11。
DoubleVector::DoubleVector(unsigned int buffer) : len(buffer), data(new base_int[len]), start(buffer / 2), end(start)