C++运算符重载:实现计数器类和数组越界检查
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 著作权归作者所有。请勿转载和采集!