gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:19:24 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com