sha*_*oth 34
如果有问题的类型没有参数构造函数,请使用new[]:
Object2* newArray = new Object2[numberOfObjects];
Run Code Online (Sandbox Code Playgroud)
不要忘记在delete[]不再需要数组时调用:
delete[] newArray;
Run Code Online (Sandbox Code Playgroud)
如果它没有这样的构造函数用于operator new分配内存,那么就地调用构造函数:
//do for each object
::new( addressOfObject ) Object2( parameters );
Run Code Online (Sandbox Code Playgroud)
同样,不要忘记在不再需要时释放数组.
Kir*_*sky 13
// 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 );
Run Code Online (Sandbox Code Playgroud)
muk*_*mar 12
假设您的类是Base,并且您有一个参数构造函数
Base arr[3] = {Base(0), Base(1), Base(2)} ;
Run Code Online (Sandbox Code Playgroud)
Object2 *myArray[42];
for (int i = 0; i < 42; i++)
{
myArray[i] = new Object2(param1, param2, ...);
}
Run Code Online (Sandbox Code Playgroud)
稍后您将需要遍历数组并单独释放每个成员:
for (int j = 0; j < 42; j++)
{
delete myArray[j];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65112 次 |
| 最近记录: |