我想在不使用STL的情况下在C++中创建一个对象数组。
我该怎么做呢?
如何创建没有无参数构造函数(默认构造函数)的Object2数组?
发布于 2010-03-22 23:25:31
如果有问题的类型没有参数构造函数,请使用new[]
Object2* newArray = new Object2[numberOfObjects];当您不再需要数组时,不要忘记调用delete[]:
delete[] newArray;如果它没有这样的构造函数使用operator new来分配内存,那么就地调用构造函数:
//do for each object
::new( addressOfObject ) Object2( parameters );同样,当您不再需要数组时,不要忘记释放它。
发布于 2010-03-22 23:32:44
假设您的类是Base,并且您有一个单参数构造函数
Base arr[3] = {Base(0), Base(1), Base(2)} ;发布于 2010-03-22 23:40:30
// allocate memory
Object2* objArray = static_cast<Object2*>( ::operator new ( sizeof Object2 * NUM_OF_OBJS ) );
// invoke constuctors
for ( size_t i = 0; i < NUM_OF_OBJS; i++ )
new (&objArray[i]) Object2( /* initializers */ );
// ... do some work
// invoke destructors
for ( size_t i = 0; i < NUM_OF_OBJS; i++ )
objArray[i].~Object2();
// deallocate memory
::operator delete ( objArray );https://stackoverflow.com/questions/2493431
复制相似问题