C++数组越界检查:重载[]运算符
C++数组越界检查:重载'[]'运算符
在C++编程中,数组越界访问是一个常见错误,会导致程序崩溃或产生不可预测的结果。为了提高代码安全性,我们可以通过重载'[]'运算符来实现数组越界检查。
以下是使用C++实现数组越界检查的示例代码:cpp#include
class Border {private: int* arr; int size;
public: Border(int size) { this->size = size; arr = new int[size]; }
~Border() { delete[] arr; }
int& operator[](int index) { if (index < 0 || index >= size) { std::cout << '数组越界!' << std::endl; exit(1); } return arr[index]; }};
int main() { Border b(5);
b[0] = 10; b[1] = 20; b[2] = 30; b[3] = 40; b[4] = 50;
std::cout << b[0] << std::endl; // 输出 10 std::cout << b[2] << std::endl; // 输出 30 std::cout << b[5] << std::endl; // 输出 '数组越界!' 并终止程序
return 0;}
代码解释:
-
Border类: - 包含一个私有指针arr,指向动态分配的整型数组。 - 包含一个私有整型变量size,存储数组的大小。 - 构造函数Border(int size):根据传入的大小分配内存并初始化数组。 - 析构函数~Border():释放数组内存。 - 重载的'[]'运算符int& operator[](int index): - 接收一个整型参数index,表示要访问的数组元素的索引。 - 检查index是否在有效范围内(0 到 size-1)。 - 如果index越界,则输出错误信息并使用exit(1)终止程序。 - 如果index有效,则返回对应数组元素的引用。 -
main函数: - 创建一个Border对象b,大小为5。 - 使用'[]'运算符访问b的不同元素,包括越界的索引。 - 当访问b[5]时,程序会输出'数组越界!'并终止。
通过重载'[]'运算符,我们可以在访问数组元素时进行边界检查,提高代码的健壮性和安全性,避免因数组越界访问导致的程序崩溃。
原文地址: https://www.cveoy.top/t/topic/f31p 著作权归作者所有。请勿转载和采集!