设计一个数组类模板 Array<T>,其中包含重载下标运算符,并由此产生模板类 Array<int>和Array<char>
时间: 2023-12-02 08:06:05 浏览: 83
好的,以下是代码实现:
```c++
#include <iostream>
using namespace std;
template<typename T>
class Array {
private:
T* data;
int size;
public:
Array(int n) {
size = n;
data = new T[size];
}
~Array() {
delete[] data;
}
int getSize() {
return size;
}
T& operator[](int i) {
return data[i];
}
};
int main() {
Array<int> intArr(5);
for (int i = 0; i < intArr.getSize(); i++) {
intArr[i] = i;
}
cout << "Array of integers: ";
for (int i = 0; i < intArr.getSize(); i++) {
cout << intArr[i] << " ";
}
cout << endl;
Array<char> charArr(5);
for (int i = 0; i < charArr.getSize(); i++) {
charArr[i] = 'A' + i;
}
cout << "Array of characters: ";
for (int i = 0; i < charArr.getSize(); i++) {
cout << charArr[i] << " ";
}
return 0;
}
```
这段代码定义了一个数组类模板`Array<T>`,其中包含了一个私有成员变量`data`,表示数组的数据,以及一个`size`成员变量,表示数组的长度。在构造函数中,我们通过动态内存分配为`data`成员分配空间。在析构函数中,我们释放了动态分配的内存。
该类模板还包含了一个`getSize`函数,用于获取数组的长度。最重要的是,我们重载了下标运算符`[]`,使得我们可以通过下标来访问数组元素。
在`main`函数中,我们首先定义了一个`Array<int>`类型的对象`intArr`,并使用循环为其赋值。然后,我们打印出该数组的元素。接着,我们定义了一个`Array<char>`类型的对象`charArr`,并使用循环为其赋值。最后,我们打印出该数组的元素。
需要注意的是,我们可以根据需要定义任意类型的`Array`对象,只需要在尖括号中指定相应的类型即可。
阅读全文