gpt4 book ai didi

c++ - 涉及类和结构的构造函数/析构函数

转载 作者:行者123 更新时间:2023-11-28 00:58:00 26 4
gpt4 key购买 nike

我正在编写一个程序,需要制作一个对象数组,具体来说,我有一个 31x1 数组,其中每个位置都是一个对象(每个对象基本上都是由 6 个整数构建的)。这是我所拥有的,但出了点问题,我需要一些帮助,谢谢。

31x1 结构头"

const int days=31;

struct Arr{

int days;
int *M;
};
typedef Arr* Array;

31x1 矩阵构造函数:

void constr(){
int *M;
M = new Expe[31]; // Expe is the class

类标题:

class Expe {
private:
//0-HouseKeeping, 1-Food, 2-Transport, 3-Clothing, 4-TelNet, 5-others
int *obj;
}

类对象构造函数:

Expe::Expe() {
this->obj=new int[6];
}

请帮忙...因为我迷路了。

最佳答案

除非万不得已,否则不应使用 new。您正在动态分配内存,之后您必须手动删除这些内存。

相反,使用静态分配的数组:

struct Arr{
int days;
Expe M[31];
}

这样就不用构造M了,它会自动填充31个Expe对象。Expe 中的 int 数组也是如此。

(提示:结构和类几乎相同。它们唯一的区别是结构的默认可见性是公开的。除此之外,结构可以像类一样拥有成员函数和构造函数。)

如果你必须使用动态分配,你应该遵循这个符号:

X* variableName = new X[size];
...
delete[] variableName; //Be sure to get rid of unused memory afterwards.

如果您想在其中存储一个整数数组,指针只能是 int* 类型。

您还可以使用 const int 来声明数组大小。所以这是有效的:

const int size = 5;
int X[size];

您可以使用它来摆脱代码中的“魔数(Magic Number)”。

typedef Arr* Array; 这样的类型定义通常用在 C 中,而不是在 C++ 中。几乎没有任何情况需要像这样输入定义。

如果您发布整个代码,我们可能会提供更好的帮助。看来你的代码不只是一两个错误,还有一些基本的理解。

关于c++ - 涉及类和结构的构造函数/析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10112387/

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