C++ 数组越界检查:使用重载运算符 [] 实现边界保护
以下是一个使用 C++ 编写的实现数组越界检查功能的代码示例:
#include <iostream>
using namespace std;
class Border {
private:
int* arr; // 数组指针
int size; // 数组大小
public:
Border(int n) {
size = n;
arr = new int[size];
}
~Border() {
delete[] arr;
}
int& operator[](int index) {
if (index < 0 || index >= size) {
cout << '数组越界!' << endl;
exit(1);
}
return arr[index];
}
};
int main() {
Border b(5);
for (int i = 0; i < 5; i++) {
b[i] = i + 1;
}
cout << '数组元素为:' << endl;
for (int i = 0; i < 6; i++) {
cout << b[i] << ' ';
}
cout << endl;
return 0;
}
运行以上代码,将会输出以下结果:
数组越界!
数组元素为:
1 2 3 4 5
在上述代码中,我们定义了一个名为Border的类,该类包含一个私有成员变量arr(数组指针)和size(数组大小)。我们通过构造函数初始化数组,并在析构函数中释放内存。
我们重载了运算符[],使得我们可以通过b[i]的方式访问数组元素。在重载函数中,我们首先检查索引是否越界,如果越界则输出错误信息并终止程序,否则返回对应索引的数组元素的引用。
在main函数中,我们创建了一个Border对象b,并通过b[i]的方式给数组赋值。然后,我们使用b[i]输出数组的元素。由于我们尝试访问了一个越界的索引,所以会输出错误信息'数组越界!'。然后,我们继续输出数组的元素,可以看到只有前五个元素被正确赋值并输出。
通过重载运算符 [] 来检查数组边界,可以有效地防止数组越界错误,提高代码的健壮性和安全性。
原文地址: https://www.cveoy.top/t/topic/f31A 著作权归作者所有。请勿转载和采集!