【发布时间】:2015-03-03 09:18:20
【问题描述】:
已经有很多关于在没有默认构造函数的情况下在 C++ 中创建对象数组的问题已得到解答
how to dynamically declare an array of objects with a constructor in c++
Constructors and array of object in C++
我想做的是创建一个数组,让我可以为每个元素拥有自定义构造函数。
在 C++ 中最好或最惯用的方法是什么?
例子:
MyClass *myVar;
myVar = new MyClass[5];
int i = 0;
for(i = 0;i < num;i++)
myVar[i] = new MyClass(i,i);
在这种情况下,您会看到一个指针数组,并且在 for 循环中,我们使用自定义构造函数参数创建一个对象。但是,我不确定这是否是最好的方法,因为它在堆上分配数据,可能不是连续的,分配问题,添加指针等等。
我问这个的原因是我不想初始化一个包含 n 个对象的数组 _only 以使用set_data 方法编辑元素。
例子:
[stuff] //initialize array with default values
for(i = 0;i < num;i++)
myVar[i].set_data(i)
因为set_data 可能会编辑一些只能在初始化时设置的数据。 (当然,set 私有变量可用于跟踪对象是否已设置,但这看起来很笨拙 - 或者这在 C++ 中通常是如何完成的?)
【问题讨论】:
标签: c++ arrays constructor