C++ 运算符重载实战:计数器类与数组越界检查
C++ 运算符重载实战:计数器类与数组越界检查
运算符重载是 C++ 的一项强大功能,允许开发者赋予运算符新的含义,使其能够操作用户自定义类型。本文将通过两个实例:计数器类(Counter)和数组越界检查类(Border),介绍如何使用运算符重载简化代码,提高可读性。
1. 计数器类 (Counter): 重载 '+' 运算符
1.1 代码实现c++class Counter {private: int n;
public: Counter(int num = 0) : n(num) {}
// 重载 '+' 运算符,实现两个 Counter 对象相加 Counter operator+(const Counter& other) const { return Counter(n + other.n); }
int getValue() const { return n; }};
1.2 使用方法c++int main() { Counter c1(5); Counter c2(3); Counter c3 = c1 + c2; // 使用重载的 '+' 运算符
std::cout << 'c3 的值为: ' << c3.getValue() << std::endl; // 输出:c3 的值为: 8 return 0;}
1.3 心得体会
通过重载 '+' 运算符,我们可以像操作内置类型一样对 Counter 对象进行相加操作,使得代码更加直观易懂。
2. 数组越界检查类 (Border): 重载 '[]' 运算符
2.1 代码实现c++template <typename T, size_t N>class Border {private: T arr[N];
public: // 重载 '[]' 运算符,实现数组越界检查 T& operator[](int index) { if (index < 0 || index >= N) { throw std::out_of_range('数组索引越界!'); } return arr[index]; }};
2.2 使用方法c++int main() { Border<int, 5> arr;
try { arr[2] = 10; // 使用重载的 '[]' 运算符 std::cout << 'arr[2] 的值为: ' << arr[2] << std::endl;
arr[6] = 5; // 试图访问越界元素 } catch (const std::out_of_range& e) { std::cerr << e.what() << std::endl; // 输出:数组索引越界! }
return 0;}
2.3 心得体会
重载 '[]' 运算符可以实现对数组的越界检查,增强程序的健壮性。当访问越界元素时,会抛出异常,提醒开发者进行处理,避免程序崩溃。
总结
通过以上两个例子,我们可以看到运算符重载可以使代码更加简洁易读,同时也能提高程序的健壮性。合理地使用运算符重载可以使我们的代码更加优雅和高效。
原文地址: https://www.cveoy.top/t/topic/f31C 著作权归作者所有。请勿转载和采集!