第四节 · 换一种干活的方式 · 函数调用运算符定义

递增递减运算符(++--)和成员访问运算符(->*)的重载有一些特殊的规则和技巧。


前置递增递减

class Counter
{
private:
    int value;
    
public:
    Counter(int v = 0) : value(v) {}
    
    // 前置 ++:返回引用
    Counter& operator++()
    {
        ++value;
        return *this;
    }
    
    // 前置 --
    Counter& operator--()
    {
        --value;
        return *this;
    }
    
    int getValue() const { return value; }
};

int main()
{
    Counter c(5);
    
    cout << (++c).getValue() << endl;  // 6
    cout << (++c).getValue() << endl;  // 7
    
    return 0;
}

后置递增递减


迭代器风格


箭头运算符 ->


链式箭头运算符


指针风格的类


为什么前置比后置高效


实现范围迭代


习题

  • 解释前置和后置递增的参数列表区别。

  • 为双向迭代器添加 -- 运算符。

  • 实现一个 StepRange 类,支持指定步长。

Last updated