动态分配对象数组,如 int
Dynamically allocating array of objects like int
为了动态创建int
数组,我需要做int *a = new int[20];
。
是否有类似的方法来创建对象或结构数组?
例如,我需要动态分配的class A
对象数组,我应该如何声明它(语法)?
每个对象上将调用什么构造函数(如果调用任何构造函数)?
使用带有指针的数组:
A* a = new A [20];
没有指针
A a [20];
我建议使用向量:
//init
std::vector<A> aList;
//reserve memory size - not necessary
aList.reserve (20);
//put elements in
aList.push_back (A ());
//access elements
aList [0];
您可以使用
以下行执行此操作:
A* a = new A[N];
它是如何工作的?
new
关键字将在堆中分配N
顺序块。每个块的大小为 sizeof(A)
因此总大小(以字节为单位)为 N*sizeof(A)
。通过在内存中分配这些对象,可以确保通过调用默认构造函数N
次来完成。
另类:
请改用std::vector
。它将为您完成所有工作。
语法(c++):
类名 *类对象 = 新类名;
例如让我们假设一个名为 car 的类。
car *obj = new car;
car *obj = new car[n]; // n objects will be created by calling the def. constructor
相关文章:
- 按字符值访问int数组
- 将 int 数组转换为 std::vector<int*>
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 整数区间(或 int 数组)中每个数字的出现次数
- Int 数组到C++容器
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- 如何检测将文本文件读入 int 数组的新行
- C++快速将 int 数组内容转储到文本文件中
- <string> 如何在使用 SWIG 时将 int 数组和 List 作为参数传递给 C# C++
- 如何制作不允许重复值的 C++ int 数组循环?
- 如何将逗号分隔的文件读取为 2D int 数组?
- int 数组,但索引是字符?
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 将 int 数组转换为带有小数C++的双精度数组
- 将双精度值分配给 int 数组时的类型转换
- 已编辑 我如何将其拆分为 char 和 int 数组
- 从 C++ 中的 int ** 数组访问元素
- C++程序无法分配 int 数组?
- 我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?
- 如何通过头文件中的函数初始化 const int 数组?