C++ Array 类模板实现:定义、成员函数和测试示例
C++ Array 类模板实现:定义、成员函数和测试示例
本文将演示如何使用 C++ 模板实现一个通用的 Array 类,方便创建不同数据类型的数组。我们将定义必要的成员函数,包括构造函数、析构函数、复制构造函数、getAt 和 setAt 函数,并在示例代码中展示如何创建 int 和 double 类型的数组对象,并为其赋值和输出内容。
代码实现
#include<iostream>
using namespace std;
template<typename T>
class Array {
private:
T* data;
int size;
public:
// 构造函数
Array(int size) {
this->size = size;
data = new T[size];
}
// 析构函数
~Array() {
delete[] data;
}
// 复制构造函数
Array(const Array& other) {
size = other.size;
data = new T[size];
for (int i = 0; i < size; i++) {
data[i] = other.data[i];
}
}
// 获取指定位置的元素
T getAt(int index) const {
if (index >= 0 && index < size) {
return data[index];
}
else {
cout << 'Invalid index!' << endl;
return T();
}
}
// 设置指定位置的元素
void setAt(int index, T value) {
if (index >= 0 && index < size) {
data[index] = value;
}
else {
cout << 'Invalid index!' << endl;
}
}
};
int main() {
// 创建int型数组对象
Array<int> intArray(5);
intArray.setAt(0, 1);
intArray.setAt(1, 2);
intArray.setAt(2, 3);
intArray.setAt(3, 4);
intArray.setAt(4, 5);
// 输出int型数组元素
cout << 'intArray: ';
for (int i = 0; i < 5; i++) {
cout << intArray.getAt(i) << ' ';
}
cout << endl;
// 创建double型数组对象
Array<double> doubleArray(5);
doubleArray.setAt(0, 1.1);
doubleArray.setAt(1, 2.2);
doubleArray.setAt(2, 3.3);
doubleArray.setAt(3, 4.4);
doubleArray.setAt(4, 5.5);
// 输出double型数组元素
cout << 'doubleArray: ';
for (int i = 0; i < 5; i++) {
cout << doubleArray.getAt(i) << ' ';
}
cout << endl;
return 0;
}
代码解释
-
模板定义:
template<typename T> class Array { // ... };使用
template<typename T>语法定义 Array 类模板,允许创建不同数据类型的数组对象。 -
成员变量:
private: T* data; int size;data是一个指向数组元素的指针,用于存储数组数据。size表示数组的大小。
-
构造函数:
Array(int size) { this->size = size; data = new T[size]; }构造函数接受数组大小作为参数,分配内存并初始化数组。
-
析构函数:
~Array() { delete[] data; }析构函数用于释放动态分配的内存。
-
复制构造函数:
Array(const Array& other) { size = other.size; data = new T[size]; for (int i = 0; i < size; i++) { data[i] = other.data[i]; } }复制构造函数用于创建新的 Array 对象,并复制另一个 Array 对象的内容。
-
getAt 函数:
T getAt(int index) const { if (index >= 0 && index < size) { return data[index]; } else { cout << 'Invalid index!' << endl; return T(); } }getAt 函数接受一个索引作为参数,返回对应索引处的元素值。如果索引无效,则输出错误信息并返回默认值。
-
setAt 函数:
void setAt(int index, T value) { if (index >= 0 && index < size) { data[index] = value; } else { cout << 'Invalid index!' << endl; } }setAt 函数接受一个索引和一个值作为参数,将指定索引处的元素值设置为给定值。如果索引无效,则输出错误信息。
-
主函数测试: 主函数展示了如何创建 int 和 double 类型的数组对象,并为其赋值和输出内容。
总结
本文介绍了如何使用 C++ 模板实现一个通用的 Array 类,并提供了使用 int 和 double 类型创建数组对象的测试示例。该 Array 类模板可以方便地用于创建不同数据类型的数组对象,并提供了一系列成员函数,方便操作数组元素。
原文地址: https://www.cveoy.top/t/topic/qd4c 著作权归作者所有。请勿转载和采集!