我在初始化(构造函数)对象的数组指针时遇到了一个小问题。请参阅下面的类(class)。类test有2个变量成员,一个将是数组的指针(值),以及他的大小(size);以及带参数的构造函数和析构函数。在 main 函数中,我将创建一个对象数组指针,但我遇到了问题。如果我创建一个像这样的对象:
test obj(4);
会创建一个对象,他的实例,值数组是大4。
然后如果我想创建一个对象数组:
test *obj;
obj = new test[2]{4,7};
我将创建 2 个对象:大 4 的 obj[0]
和大 7 的 obj[1]
。
所以如果我想创建更多对象:
test *obj;
obj=new test[100]{/*here I must write 100 numbers*/}
这就是问题所在。 因为我不能写这样的东西:
test *obj;
obj=new int[100]{4}
我希望每个 value[](测试类的实例)都是大 4,我不会写 100 次“4”。
我认为声明数组的类比:
如果我写int array[5]={0,0,0,0,0}
,我必须写4次“0”,或者我也可以写:
int array[5]={0}
并且每个值都设置为 0。(如果写 int array[5]={5}
,第一个索引也是正确的将为 5,其他为 0)。
我应该使用默认构造函数吗?我该怎么办?
#include <iostream>
using namespace std;
class test
{
private:
int* value;
int size;
public:
test(int size)
{
this->size = size;
value = new int[size];
}
~test()
{
delete[]value;
}
};
最佳答案
可以在栈上分配内存,摆脱动态分配和内存管理。
test array[100];
std::fill(std::begin(array), std::end(array), test(100));
请注意,您需要一个默认构造函数。
关于c++ - 如何初始化数组指针对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57238727/