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 心得体会

重载 '[]' 运算符可以实现对数组的越界检查,增强程序的健壮性。当访问越界元素时,会抛出异常,提醒开发者进行处理,避免程序崩溃。

总结

通过以上两个例子,我们可以看到运算符重载可以使代码更加简洁易读,同时也能提高程序的健壮性。合理地使用运算符重载可以使我们的代码更加优雅和高效。

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

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

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