C++运算符重载:实现计数器类和数组越界检查

本文将介绍如何使用C++的运算符重载特性,实现一个简单的计数器类,并演示如何通过重载'[]'运算符来进行数组越界检查。

1. 计数器类 Countercppclass Counter {private: int n;public: Counter(int num = 0) : n(num) {}

Counter operator+(const Counter& other) const {        return Counter(n + other.n);    }};

代码说明:

  • Counter 类包含一个私有成员 n 用于存储计数器的值。* 构造函数 Counter(int num = 0) 初始化计数器的值。* 重载 '+' 运算符,实现两个 Counter 对象相加,返回一个新的 Counter 对象。

2. 边界检查类 Bordercppclass Border {private: int* arr; int size;public: Border(int arrSize) : size(arrSize) { arr = new int[size]; }

~Border() {        delete[] arr;    }

int& operator[](int index) {        if (index < 0 || index >= size) {            throw std::out_of_range('Index out of range');        }        return arr[index];    }};

代码说明:

  • Border 类包含一个私有指针 arr 指向动态分配的数组,以及一个私有成员 size 用于存储数组大小。* 构造函数 Border(int arrSize) 初始化数组大小,并分配内存空间。* 析构函数 ~Border() 释放数组所占用的内存。* 重载 '[]' 运算符,实现对数组元素的访问,并在访问越界时抛出 std::out_of_range 异常。

使用示例cpp#include

int main() { // 1. Counter类的使用示例 Counter c1(5); Counter c2(10); Counter c3 = c1 + c2; std::cout << 'c3.n = ' << c3.n << std::endl;

// 2. Border类的使用示例    Border b(5);    try {        b[0] = 1;        b[1] = 2;        b[2] = 3;        b[3] = 4;        b[4] = 5;        // b[5] = 6;  // 越界访问,抛出异常    }    catch (const std::out_of_range& e) {        std::cout << 'Exception: ' << e.what() << std::endl;    }

return 0;}

输出结果:

c3.n = 15Exception: Index out of range

总结:

本文介绍了如何使用C++运算符重载实现计数器类和数组越界检查功能,希望对你有所帮助。通过合理地使用运算符重载,可以使代码更加简洁易懂,并提高代码的可读性和可维护性。


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

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