C++动态创建对象数组
我的程序需要使用一个对象数组,而事先不知道该数组需要多少个元素。如果是其他类型(如结构体)的数组,我可以先创建一个指针,再用malloc来分配内存。对于对象数组,是否也有...
我的程序需要使用一个对象数组,而事先不知道该数组需要多少个元素。
如果是其他类型(如结构体)的数组,我可以先创建一个指针,再用malloc来分配内存。对于对象数组,是否也有类似的方法?是否能同时完成数组中对象元素的初始化(调用构造函数)?
另外,我需要在一个函数里分配这个对象数组的内存后在主函数中使用,应该怎样做? 展开
如果是其他类型(如结构体)的数组,我可以先创建一个指针,再用malloc来分配内存。对于对象数组,是否也有类似的方法?是否能同时完成数组中对象元素的初始化(调用构造函数)?
另外,我需要在一个函数里分配这个对象数组的内存后在主函数中使用,应该怎样做? 展开
5个回答
展开全部
难道你的C++教材上没有讲这些内容吗?如果真的没有,你应该把它丢掉了.看看<C++Primer>吧,对于上述所有问题,基本上都有详细的解释.
在C++中不应该再使用C的malloc,而应该使用new表达式,operator new函数,定位new以及标准库的内存分配对象.
最后一个问题是想说在进入主函数前就需要分配数组内存吗?我没记错的话这个问题<C++Primer>上没有提到过,一种简单的方法就是定义一个全局对象,在全局对象的构造函数中申请内存,这是利用了全局对象在进入main函数之前初始化的事实,不过这是依赖于编译器实现的一种方法,是一种很容易造成隐蔽错误的方法,这在很多讲C++注意事项的书籍上也有提到过不应该这样做,事实上也很难找到必须这么做的确切理由.
在C++中不应该再使用C的malloc,而应该使用new表达式,operator new函数,定位new以及标准库的内存分配对象.
最后一个问题是想说在进入主函数前就需要分配数组内存吗?我没记错的话这个问题<C++Primer>上没有提到过,一种简单的方法就是定义一个全局对象,在全局对象的构造函数中申请内存,这是利用了全局对象在进入main函数之前初始化的事实,不过这是依赖于编译器实现的一种方法,是一种很容易造成隐蔽错误的方法,这在很多讲C++注意事项的书籍上也有提到过不应该这样做,事实上也很难找到必须这么做的确切理由.
展开全部
用Vector<类型>,List<类型>之类的数据结构。它们是可以动态改变大小的。推荐使用U++里自带的类库。可到http://www.ultimatepp.org/去下载。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以搜索一下"C++ 容器"这样的关键字,查找vector,list之类的使用方法。
动态存储值
动态存储值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用std::vector不就行了。
追问
具体例?
追答
#include
void AddStructA(std::vector* pVectorA)
{
StructA a;
//对a初始化等操作。
pVectorA->push_back(a);
}
int main()
{
std::vector vectorA;
AddStructA(&vectorA);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void×类型的 vector,你看可以吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询