初始化列表问题

Initialization List Problems

本文关键字:问题 列表 初始化      更新时间:2023-10-16
DoubleVector::DoubleVector(unsigned int buffer) : len(buffer), data(new base_int[len]), start(len / 2), end(start)

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

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

现在,开始和结束都使用正确的值 25 进行初始化。 为什么? 您是否不应该假设变量的初始化顺序是什么?

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

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