我得到了以下代码,其中循环创建了 100 个对象。
我的问题是,
- 为什么我需要在
new
这里使用,因为我事先已经知道我需要多少内存。 - 是否有与我的示例代码相同但没有动态内存分配的代码?(并且不使用 std 容器,例如
vector
)(...class + dynamic momery 一起变得令人困惑)
示例代码:
class Particle {...};
Particle *myParticles[ 100 ];
for( int i = 0; i < 100; i++ )
{
myParticles[ i ] = new Particle(x,y); //x and y are randomized for each loop
}
[更新]:
class Particle
没有默认构造函数。因此Particle myParticles[ 100 ];
将不起作用。请注意,可以通过设置默认构造函数,然后创建方法来解决此问题Particle::setXY (double x, double y)
。
但是有没有办法在不创建新方法的情况下解决这个问题?即只使用构造函数,没有动态内存分配。
我只是觉得奇怪,如果没有动态内存分配,这是无法完成的(?)。还是我必须接受这只是 C++ 语言的一个怪癖的事实?