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

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

【问题讨论】:

  • 使用 std::vector 并保持理智。

标签: c++ arrays constructor new-operator


【解决方案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++标准库提供

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 2016-03-11
    • 2015-12-31
    • 2011-01-02
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多