用cpp实现,定义一个具有数组性质的类,对该类重载操作符“[]”实现数组元素的访问。要求在 操作符“[]”重载函数中对下标进行检查,越界时抛掷一种异常对象。
时间: 2024-03-18 10:42:12 浏览: 11
好的,下面是代码实现:
```cpp
#include <iostream>
#include <stdexcept>
using namespace std;
class MyArray {
private:
int* data;
int size;
public:
MyArray(int n) {
size = n;
data = new int[size];
}
~MyArray() {
delete [] data;
}
int& operator[](int index) {
if (index < 0 || index >= size) {
throw out_of_range("Index out of range.");
}
return data[index];
}
};
int main() {
MyArray arr(5);
for (int i = 0; i < 5; i++) {
arr[i] = i;
}
for (int i = 0; i < 6; i++) {
try {
cout << arr[i] << endl;
} catch (out_of_range& e) {
cout << e.what() << endl;
}
}
return 0;
}
```
在这个例子中,我们定义了一个 `MyArray` 类,具有数组的性质,使用动态内存分配来存储数据。我们重载了操作符 `[]` 来访问数组元素,并在函数中对下标进行检查,如果越界,则抛出 `out_of_range` 类型的异常对象。在主函数中,我们创建了一个 `MyArray` 对象 `arr`,并使用 `[]` 操作符来访问数组元素。由于我们在 `[]` 函数中进行了下标检查,当访问越界的元素时,会抛出异常,我们使用 `try...catch` 块来捕获异常并输出异常信息。