【问题标题】:How to initialize each object when allocating an object array [duplicate]分配对象数组时如何初始化每个对象[重复]
【发布时间】:2014-02-20 16:16:05
【问题描述】:

在 C++ 中,我有一个类 CMyObject 如下,其中 CData 是另一个类名:

Class CMyObject
{
CMyObject(CData& Data): m_Data(Data) {};
virtual ~CMyObject(void);

private:
  const CData& m_Data;
}

在分配一个CMyObject实例时,我可以这样做:

P = new CMyObject(MyData);

但是,如果我想创建一个 CMyObject 的数组,那么我可以这样做吗?

P = new CMyObject(MyData)[10];

【问题讨论】:

  • 使用向量:std::vector<CMyObject> p(10, CMyObject(Data));
  • 你需要用不同的东西来初始化数组的每个对象吗?

标签: c++ arrays object initialization


【解决方案1】:

您可以使用初始化列表(我使用 4 来节省一些输入,但您明白了):

CMyObject* P = new CMyObject[4]{MyData, MyData, MyData, MyData};

但更好的是,使用std::vector

std::vector<CMyObject> P(10, MyData);

【讨论】:

  • std::vector P(10, MyData) 会比 new CMyObject[10] 消耗更多的内存吗?
  • @user2704265 数量非常少。大约两个指针的大小。
猜你喜欢
  • 2018-09-19
  • 2012-01-17
  • 1970-01-01
  • 2012-08-28
  • 2020-04-21
  • 2016-03-11
  • 2013-10-12
  • 1970-01-01
相关资源
最近更新 更多