动态分配对象数组这是一个初学者的问题,但我已经很长时间没有做C+了,下面是.我有一个类,它包含一个动态分配的数组,比如说class A{
int* myArray;
A()
{
myArray = 0;
}
A(int size)
{
myArray = new int[size];
}
~A()
{
// Note that as per MikeB's helpful style critique, no need to check against 0.
delete [] myArray;
}}但是现在我想要为这些类创建一个动态分配的数组。以下是我的当前代码:A* arrayOfAs = new A[5];for (int i = 0; i < 5; ++i){
arrayOfAs[i] = A(3);}但这会爆炸得很厉害。因为新的A对象创建(使用A(3)(调用)在for循环迭代完成,这意味着内部myArray其中A实例获取delete []-艾德所以我觉得我的语法肯定错了?我想有几个修复方法看起来有点过火,我希望避免:创建副本构造函数A.使用vector<int>和vector<A>所以我不用担心这些。而不是arrayOfAs是一个数组A对象,它是否是A*指南针。我认为这只是一些初学者的事情,在尝试动态分配具有内部动态分配的事物时,语法实际上是有效的。(还有,风格批评很受欢迎,因为我做C+已经有一段时间了。)为未来观众提供最新信息:下面的所有答案都很有帮助。因为示例代码和有用的“规则4”,Martin的代码被接受了,但我确实建议阅读它们。一些是好的,简洁的陈述什么是错误的,还有一些正确地指出了如何和为什么vector这是个很好的方法。
3 回答
![?](http://img1.sycdn.imooc.com/533e4c1500010baf02200220-100-100.jpg)
喵喔喔
TA贡献1735条经验 获得超5个赞
typedef std::vector<int> A;typedef std::vector<A> AS;
![?](http://img1.sycdn.imooc.com/545845b40001de9902200220-100-100.jpg)
慕莱坞森
TA贡献1810条经验 获得超4个赞
int[]
vector<int>
boost::shared_array<>
.
delete
- delete
- 3 回答
- 0 关注
- 643 浏览
添加回答
举报
0/150
提交
取消