委托建设者的评估

时间:2019-04-26 17:22:37

标签: c++ c++11

我对使用委托时了解构造函数评估的顺序很感兴趣。

这是我的代码的片段:

https://{organization}.vssps.visualstudio.com/_apis/Identities?descriptors={descriptor}

请注意,它们都修改了长度,但是只有一个将长度应用于新数组。该代码有效。

我的问题:     为什么行得通?     构造函数是否仅应用非冗余的代码?     还是在这种情况下,可以在非默认构造函数中的代码之前调用默认构造函数?

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

除非您告知构造函数,否则构造函数不知道如何跳过任何内容,但对于构​​造函数委派,这种通信将很困难,因为值可以未初始化,也可以填充值,这确实不容易告诉区别。

以这种方式构造它:

Number() : length(100) {
  allocateValues();
};

Number(int len) : length(len) {
  allocateValues();
}

void allocateValues() {
  values = new int[length];
}

尽管std::vector和朋友可以帮助您,但这种形式确实很差。使用insert考虑​​这样的事情:

Number() {
  values.insert(values.begin(), len, 100);
}

Number(int len) {
  values.insert(values.begin(), len, 0);
}