gpt4 book ai didi

c++ - 委托(delegate)构造函数的评估

转载 作者:行者123 更新时间:2023-11-30 04:48:21 24 4
gpt4 key购买 nike

我很想知道使用委托(delegate)时构造函数求值的顺序。

这是我的代码片段:

Number(){
length = 100;
values = new int[length];
};
Number(int len) : Number(){
length = len;
}

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

我的问题: 为什么它有效? 构造函数是否仅应用非冗余代码? 或者,在这种情况下,默认构造函数在非默认构造函数中的代码之前被调用?

感谢您的宝贵时间!

最佳答案

除非您告诉构造函数,否则构造函数不知道如何跳过任何内容,但在构造函数委托(delegate)的情况下,这种通信将很困难,因为值可能未初始化,或者它们可能被填充,这真的不容易来区分。

以这种方式构造它:

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

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

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

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

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

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

关于c++ - 委托(delegate)构造函数的评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55872365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com