在类模板中类创建动态数组
时间: 2023-12-03 11:44:07 浏览: 27
在类模板中创建动态数组可以使用指针和 new 运算符来实现。下面是一个示例:
```c++
template <typename T>
class DynamicArray {
private:
T* data;
int size;
public:
DynamicArray(int s) {
size = s;
data = new T[size];
}
~DynamicArray() {
delete [] data;
}
T& operator[](int index) {
return data[index];
}
};
```
在上面的示例中,我们使用了指针类型 `T*` 来存储动态数组的数据,并在构造函数中使用 `new` 运算符分配了一段连续的内存空间来存储数组元素。析构函数中使用 `delete[]` 运算符释放了这段内存空间。操作符 `[]` 重载函数用于访问数组元素。
使用示例:
```c++
DynamicArray<int> arr(5);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
for (int i = 0; i < 5; i++) {
std::cout << arr[i] << " ";
}
```
输出结果为:
```
1 2 3 4 5
```
相关问题
动态数组类模板怎么测试复制构造函数
测试动态数组类模板的复制构造函数需要以下步骤:
1. 创建一个原始动态数组对象,将其填充为一些值。
2. 使用复制构造函数创建一个新的动态数组对象,并将其初始化为原始数组的副本。
3. 验证新动态数组对象中的值是否与原始数组对象中的值相同。
以下是一个示例代码,用于测试动态数组类模板的复制构造函数:
```c++
#include <iostream>
#include "DynamicArray.h"
using namespace std;
int main() {
// 创建原始动态数组
DynamicArray<int> originalArray(5);
originalArray[0] = 10;
originalArray[1] = 20;
originalArray[2] = 30;
originalArray[3] = 40;
originalArray[4] = 50;
// 复制构造函数创建新的动态数组
DynamicArray<int> copiedArray(originalArray);
// 验证新动态数组中的值是否与原始数组相同
for (int i = 0; i < originalArray.getSize(); i++) {
if (originalArray[i] != copiedArray[i]) {
cout << "Values not equal at index " << i << endl;
}
}
return 0;
}
```
在上面的示例代码中,我们创建了一个原始动态数组对象,将其填充为一些值。然后,我们使用复制构造函数创建了一个新的动态数组对象,并将其初始化为原始数组的副本。最后,我们验证了新动态数组对象中的值是否与原始数组对象中的值相同。如果两个数组中的值不相等,则会输出错误消息。
C++模板数组类
以下是一个简单的 C++ 模板数组类的示例代码:
```c++
#include <iostream>
template <typename T, int size>
class Array {
private:
T arr[size];
public:
void set(int index, T value) {
arr[index] = value;
}
T get(int index) const {
return arr[index];
}
};
int main() {
Array<int, 5> arr;
for (int i = 0; i < 5; i++) {
arr.set(i, i);
}
for (int i = 0; i < 5; i++) {
std::cout << arr.get(i) << " ";
}
return 0;
}
```
该类模板有两个模板参数:T 表示数组元素的类型,size 表示数组的大小。在该模板类中,我们定义了两个公有成员函数:set 和 get,用于设置和获取数组元素。
在主函数中,我们使用了该模板类来创建了一个整数类型的长度为 5 的数组,并通过 set 函数将数组元素设置为数组下标的值。最后,我们使用 get 函数输出了数组元素的值。
需要注意的是,在实例化模板类时,需要显式地指定模板参数的类型和值。在本例中,我们通过 Array<int, 5> 来实例化了该模板类。