定义一个具有数组性质的类,对该类重载操作符“[]”实现数组元素的访问。要求:在操作符“[]”重载函数中对下标进行检查,越界时抛掷一个异常对象。
时间: 2023-12-18 15:05:01 浏览: 44
好的,以下是一个简单的示例代码:
```c++
#include <iostream>
#include <stdexcept>
class Array {
private:
int* data;
int size;
public:
Array(int size) : size(size) {
data = new int[size];
}
~Array() {
delete[] data;
}
int& operator[](int index) {
if (index < 0 || index >= size) {
throw std::out_of_range("Index out of range!");
}
return data[index];
}
};
int main() {
Array arr(5);
for (int i = 0; i < 5; i++) {
arr[i] = i * 2;
}
for (int i = 0; i < 6; i++) {
try {
std::cout << arr[i] << std::endl;
}
catch (std::out_of_range& e) {
std::cerr << e.what() << std::endl;
}
}
return 0;
}
```
在上面的代码中,我们定义了一个名为 Array 的类,它具有一个 int 类型的数组和数组的大小。我们通过构造函数和析构函数来动态分配和释放内存。
我们使用 `operator[]` 重载了操作符,以实现数组元素的访问。在该函数中,我们首先检查下标是否越界,如果越界则抛出一个异常对象。否则,我们返回指向该下标对应元素的引用。
在主函数中,我们创建一个大小为 5 的 Array 对象,并将其元素设置为偶数。然后,我们尝试访问 6 个元素,其中最后一个元素将会越界并抛出异常。
希望这个例子可以帮助你理解如何重载操作符和如何抛出异常。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)