考虑以下Java代码.
int N = 10; Object obj[] = new Object[N]; for (int i = 0; i < N; i++) { int capacity = 1000 * i; obj[i] = new ArrayList(capacity); }
因为在Java中,所有对象都存在于Heap中,所以数组不包含对象本身,而是包含对象的引用.此外,数组本身也是一个对象,因此它存在于堆上.
什么是C++中的等价物,但保持堆栈中的数组和对象,以尽可能避免需要new和delete?
编辑:更改代码以使用自定义构造函数.
简单地宣布
Object array_of_objects[10];
在C++中,在堆栈上创建10个类型为Object的默认构造对象.
如果你想使用非默认的构造函数,那么在C++中就不那么容易了.可能有一种新的放置方式,但我不能告诉你我的头脑.
编辑:链接到StackOverflow上的其他问题 如何使用新的数组位置在StackOverflow的这个问题的答案中解释.