重载运算符 [], 设计一个可以自动检查数组是否越界(一旦越界, 提示错误信息) 的类。
时间: 2024-10-11 13:10:32 浏览: 40
在 C++ 中,为了实现自动检查数组是否越界的功能,我们可以自定义一个类,为其定义一个特殊的运算符 `[]`,通常这叫做"下标运算符"。当试图访问超过数组范围的元素时,我们可以在该运算符内部添加检查逻辑。这里是一个简单的例子:
```cpp
#include <iostream>
#include <stdexcept>
class SafeArray {
private:
size_t size;
std::array<int, 5> elements; // 示例中的固定大小数组
public:
// 构造函数设置数组大小
SafeArray(size_t length) : size(length), elements() {
if (length > 5) {
throw std::out_of_range("Array size exceeds the maximum limit.");
}
}
// 自定义的下标运算符,检查索引是否在范围内
int& operator[](size_t index) {
if (index >= size) {
throw std::out_of_range("Array index out of bounds.");
}
return elements[index];
}
// 示例:使用运算符 []
void setValue(int value, size_t index) {
try {
elements[index] = value;
} catch (const std::out_of_range& e) {
std::cerr << e.what() << '\n';
}
}
// 示例:打印数组
void print() const {
for (size_t i = 0; i < size; ++i) {
std::cout << "Element at index " << i << ": " << elements[i] << '\n';
}
}
};
int main() {
SafeArray arr(4);
arr[0] = 10;
arr[4] = 20; // 这将会抛出错误
arr.print();
return 0;
}
```
在这个例子中,当我们尝试访问超出范围的元素时,`operator[]`会抛出一个 `std::out_of_range` 异常,并附带相应的错误信息。
阅读全文