首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++,不带<vector>的对象数组

C++,不带<vector>的对象数组
EN

Stack Overflow用户
提问于 2010-03-22 23:24:07
回答 9查看 69.1K关注 0票数 32

我想在不使用STL的情况下在C++中创建一个对象数组。

我该怎么做呢?

如何创建没有无参数构造函数(默认构造函数)的Object2数组?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-03-22 23:25:31

如果有问题的类型没有参数构造函数,请使用new[]

代码语言:javascript
运行
复制
Object2* newArray = new Object2[numberOfObjects];

当您不再需要数组时,不要忘记调用delete[]

代码语言:javascript
运行
复制
delete[] newArray;

如果它没有这样的构造函数使用operator new来分配内存,那么就地调用构造函数:

代码语言:javascript
运行
复制
//do for each object
::new( addressOfObject ) Object2( parameters );

同样,当您不再需要数组时,不要忘记释放它。

票数 35
EN

Stack Overflow用户

发布于 2010-03-22 23:32:44

假设您的类是Base,并且您有一个单参数构造函数

代码语言:javascript
运行
复制
Base arr[3] = {Base(0), Base(1), Base(2)} ;
票数 13
EN

Stack Overflow用户

发布于 2010-03-22 23:40:30

代码语言:javascript
运行
复制
// 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 );
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2493431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档