以下是一个使用 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]输出数组的元素。由于我们尝试访问了一个越界的索引,所以会输出错误信息'数组越界!'。然后,我们继续输出数组的元素,可以看到只有前五个元素被正确赋值并输出。

通过重载运算符 [] 来检查数组边界,可以有效地防止数组越界错误,提高代码的健壮性和安全性。

C++ 数组越界检查:使用重载运算符 [] 实现边界保护

原文地址: https://www.cveoy.top/t/topic/f31A 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录