如何初始化动态对象数组
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++ 中,您应该仅在您自己的代码中非常罕见 的情况下使用new
和delete
。这些非常先进,您必须 100% 确定您的用例确实需要这样做。
通常根本不需要手动管理内存,c++标准库提供
非常广泛的Container classes 集合 多个Smart pointer classes让您摆脱手动动态内存管理的所有陷阱。 只需使用那些东西,任何要求你做其他事情的人很可能是无能的,或者被神话所愚弄,说使用标准库中的东西会对性能产生重大影响。
【讨论】:
以上是关于如何初始化动态对象数组的主要内容,如果未能解决你的问题,请参考以下文章