涉及类和结构的构造函数/析构函数
Constructor/Destructor involving a class and a struct
>我正在开发一个程序,需要制作一个对象数组,特别是我有一个 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];
您可以使用它来摆脱代码中的"幻数"。
像typedef Arr* Array;
这样的Typedef通常用于C,而不是C++。几乎没有任何情况需要键入定义这样的东西。
如果您发布整个代码,我们可能会提供更好的帮助。看来你的代码中不仅有一两个错误,还有一些基本的理解。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- new[] / delete[] 并在C++中抛出构造函数/析构函数
- 创建/向容器添加对象时如何使用构造函数/析构函数
- LNK2019构造函数/析构函数使用 C++ Dll
- 有人可以解释一下这里发生了什么(类和构造函数/析构函数)吗?
- 带智能ptr的Pimpl-为什么需要构造函数/析构函数
- 需要构造函数/析构函数/类型转换错误
- Boost共享指针构造函数/析构函数
- 通过值或引用调用时未调用构造函数/析构函数.不管怎样
- C++构造函数析构函数中的奇怪行为
- 构造函数/析构函数链接错误
- 在模板化函数中调用具有特征的显式构造函数/析构函数
- c++构造函数/析构函数
- 为什么赋值的成本不能保证小于构造函数-析构函数对
- 重写默认构造函数/析构函数而不实现它们
- 使用自定义分配器调用对象构造函数/析构函数
- 涉及类和结构的构造函数/析构函数
- 在抽象构造函数/析构函数中调用纯虚拟函数安全吗
- 如果在没有限定的情况下从构造函数/析构函数调用虚拟函数,则是否会发生虚拟调度
- C++基于堆栈的构造函数/析构函数无法按预期工作