C++重组数组下标操作符【】,使其具有判断与处理下标越界的功能
时间: 2023-07-14 13:13:08 浏览: 46
可以通过重载下标操作符[]来实现数组下标越界的判断和处理。
一般地,我们会定义一个新的类来表示数组,然后在类中重载[]操作符。具体代码如下:
```c++
template<typename T>
class MyArray {
public:
MyArray(int size) : m_size(size) {
m_data = new T[size];
}
~MyArray() {
delete[] m_data;
}
T& operator[](int index) {
if (index < 0 || index >= m_size) {
std::cerr << "Index out of range!" << std::endl;
exit(1);
}
return m_data[index];
}
private:
T* m_data;
int m_size;
};
```
在上面的代码中,我们使用了模板来支持不同类型的数组元素。构造函数和析构函数分别用来分配和释放内存。下标操作符[]则用来访问数组元素,并且在访问时进行越界判断。
当下标越界时,我们在标准错误流中输出一条错误信息,并且调用`exit()`函数来终止程序的运行。这样做可以有效地避免程序继续执行下去,因为此时访问越界的内存会引发未定义行为,可能会导致程序崩溃或产生其他的难以预测的行为。
使用上述代码定义的数组类,我们可以像下面这样使用它:
```c++
MyArray<int> arr(10);
for (int i = 0; i < 20; i++) {
arr[i] = i;
}
```
当我们访问arr[10]、arr[-1]等越界的元素时,程序就会终止并输出错误信息。