📜  C++中的增量(++)和减量(–)运算符重载(1)

📅  最后修改于: 2023-12-03 14:59:51.288000             🧑  作者: Mango

C++中的增量(++)和减量(–)运算符重载

C++ 中的增量(++)和减量(--)运算符可以被重载。重载后的运算符支持自定义类型,可以实现更丰富的功能。在重载这两个运算符时,需要注意它们的前置和后置两种形式。

前置和后置

前置形式 ++x 和 --x 可以直接修改 x 的值,并返回修改后的值。而后置形式 x++ 和 x-- 则是将 x 的值拷贝后再修改,最后返回拷贝前的值。

如果重载前置形式,则函数的返回类型为该类型的引用;如果重载后置形式,则函数的返回类型为该类型的值。

示例代码
#include <iostream>
using namespace std;

class Counter {
    private:
        int count;
    public:
        // 构造函数
        Counter(): count(0){}
        Counter(int c): count(c){}
        // 前置形式重载++
        Counter& operator++() {
            count++;
            return *this;
        }
        // 后置形式重载++
        Counter operator++(int) {
            Counter temp(count);
            count++;
            return temp;
        }
        // 前置形式重载--
        Counter& operator--() {
            count--;
            return *this;
        }
        // 后置形式重载--
        Counter operator--(int) {
            Counter temp(count);
            count--;
            return temp;
        }
        // 输出计数器值
        void print() const {
            cout << "count: " << count << endl;
        }
};

int main() {
    Counter c1(10), c2;
    // 前置形式++
    ++c1;
    c1.print();
    // 后置形式++
    c2 = c1++;
    c1.print();
    c2.print();
    // 前置形式--
    --c1;
    c1.print();
    // 后置形式--
    c2 = c1--;
    c1.print();
    c2.print();
    return 0;
}
增量(++)和减量(--)运算符重载总结

C++ 中的增量(++)和减量(--)运算符重载可以通过前置和后置两种形式进行重载,重载后的运算符支持自定义类型,并可以实现更丰富的功能。在重载这两个运算符时,需要注意它们的前置和后置两种形式,并根据需要返回相应类型的引用或值。