设计一个数组类模板 Array<T>,其中包含重载下标运算符函数,并由此产生模板类 Array<int>和Array<char>,使用一些测试数据对其进行测试。
时间: 2024-05-09 11:15:06 浏览: 113
类模板+运算符重载(成员函数形式)
4星 · 用户满意度95%
好的,以下是实现代码:
```cpp
#include <iostream>
template <typename T>
class Array {
private:
T* arr;
int size;
public:
Array(int s) : size(s) {
arr = new T[size];
}
~Array() {
delete[] arr;
}
T& operator[](int index) {
if (index < 0 || index >= size) {
std::cout << "Index out of bounds!" << std::endl;
exit(1);
}
return arr[index];
}
};
int main() {
Array<int> intArr(5);
for (int i = 0; i < 5; i++) {
intArr[i] = i * i;
}
std::cout << "Int array: ";
for (int i = 0; i < 5; i++) {
std::cout << intArr[i] << " ";
}
std::cout << std::endl;
Array<char> charArr(6);
for (int i = 0; i < 6; i++) {
charArr[i] = 'a' + i;
}
std::cout << "Char array: ";
for (int i = 0; i < 6; i++) {
std::cout << charArr[i] << " ";
}
std::cout << std::endl;
// Test out of bounds
//intArr[10] = 100;
return 0;
}
```
使用模板类 Array<int> 和 Array<char> 分别创建了一个整型数组和一个字符数组,并测试了它们的下标运算符函数重载是否正常工作。程序输出如下:
```
Int array: 0 1 4 9 16
Char array: a b c d e f
```
可以看到,程序正常输出了两个数组。同时,如果在测试中尝试访问超出数组范围的元素,程序会提示“Index out of bounds!”错误并退出。
阅读全文