我对使用委托时了解构造函数评估的顺序很感兴趣。
这是我的代码的片段:
https://{organization}.vssps.visualstudio.com/_apis/Identities?descriptors={descriptor}
请注意,它们都修改了长度,但是只有一个将长度应用于新数组。该代码有效。
我的问题: 为什么行得通? 构造函数是否仅应用非冗余的代码? 还是在这种情况下,可以在非默认构造函数中的代码之前调用默认构造函数?
感谢您的时间!
答案 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);
}