c++ - 如何初始化数组指针对象

标签 c++ object pointers constructor

我在初始化(构造函数)对象的数组指针时遇到了一个小问题。请参阅下面的类(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/

相关文章:

c++ - make_heap() 函数参数——如果我不想包含某些元素怎么办?

c++ - 从后到前显示用链表实现的队列

c++ - 选择满足条件的特定对象

c - 将内存分配给双指针?

arrays - 如何消除使用指针的二维数组声明中的错误?

c++ - std::bind 编译器错误 gcc

c# - 一般业务对象实践(和异常错误 - redux)

javascript - 连接对象以用于图表

delphi - 无法定义记录指针

python - 将 2 个 python 类对象添加在一起