gpt4 book ai didi

c++ - 新手 : C++ question about initialization lists

转载 作者:太空狗 更新时间:2023-10-29 23:26:08 25 4
gpt4 key购买 nike

假设我在标题中声明了一组对象。数组的大小可能非常大。在我的源文件中,我为我的类创建了构造函数,我想初始化数组中的所有对象。如果这些对象不是用零参数构造函数构造的,我被告知这些需要放在我的初始化列表中。

我的问题是,如果我想使用循环来初始化这个可能很大的对象数组,那么它不会进入初始化列表,对吗?我不想放入我的初始化列表:str1("1"), str2("2"), ..., strn("n")。初始化所有这些对象的循环是否可以放在 header 中或构造函数的主体中?

请告诉我。我还没有看到这样的例子。

谢谢,jbu

最佳答案

您无法在初始化列表中循环,但是在构造函数主体中循环没有问题,只要对象类型具有有效的赋值运算符。在构造函数体之前,数组中的对象将首先使用它们的零参数构造函数进行初始化。然后在正文中,您将把它们重新分配给它们需要的任何东西。

另请注意,如果数组中的每个对象要使用相同的非零参数构造函数进行初始化,则可以使用 std::vector 类型,并在初始化列表中指定默认的非零参数构造函数为分配内部数组时使用,即:

// in .h

class MyClass
{
...
MyClass();

private:

vector<SomeObject> objects;
};

// in .cpp

MyClass::MyClass()
: objects(100,SomeObject(10, "somestring"))
{
}

关于c++ - 新手 : C++ question about initialization lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313579/

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