如何初始化动态对象数组

Posted

技术标签:

【中文标题】如何初始化动态对象数组【英文标题】:how to initialize dynamic object array 【发布时间】:2018-11-21 16:12:11 【问题描述】:

如果我动态创建对象数组,那么如何初始化实例数据成员。因为在使用 new 关键字时,只能提及数组维度,而不能提及构造函数的参数。

【问题讨论】:

使用 std::vector 并保持理智。 【参考方案1】:

因为在使用 new 关键字时,只能提及数组维度,而不能提及构造函数的参数。

c++语言中的规范方式是使用std::vector:

std::vector<int> array(10, 42);
                //     ^   ^
                //     |   | the value
                //     |  the size

用不同的值初始化std::vector 的另一种方法是使用std::initializer_list,如下所示:

std::vector<int> array =  1, 2 , 3, 4, 5, 6 , 55, 0, -2, 42, -16 ;

注意:

在 c++ 中,您应该仅在您自己的代码中非常罕见 的情况下使用newdelete。这些非常先进,您必须 100% 确定您的用例确实需要这样做。

通常根本不需要手动管理内存,c++标准库提供

非常广泛的Container classes 集合 多个Smart pointer classes

让您摆脱手动动态内存管理的所有陷阱。 只需使用那些东西,任何要求你做其他事情的人很可能是无能的,或者被神话所愚弄,说使用标准库中的东西会对性能产生重大影响。

【讨论】:

以上是关于如何初始化动态对象数组的主要内容,如果未能解决你的问题,请参考以下文章

对象数组

对象数组

二维对象数组 c 锐利的动态值分配

如何在 C++ 中为二维对象数组分配内存? [复制]

对象数组

数组静态初始化和动态初始化