如何区分(重载时)operator ++的前缀和后缀形式? (C ++)

时间:2009-05-21 19:55:13

标签: c++ operator-overloading postfix-operator prefix-operator

因为我为迭代器类重载了operator++

template<typename T>
typename list<T>::iterator& list<T>::iterator::operator++()
{
    //stuff
}

但是当我尝试做的时候

list<int>::iterator IT;
IT++;

我使用前缀形式警告没有postifx ++。我怎样才能专门重载前缀/ postifx表单?

4 个答案:

答案 0 :(得分:20)

http://www.devx.com/tips/Tip/12515

class Date {
    //...
    public:
    Date& operator++(); //prefix
    Date& operator--(); //prefix
    Date operator++(int unused); //postfix
    Date operator--(int unused); //postfix
};

答案 1 :(得分:12)

编写相同运算符重载的版本,但为其指定类型为int的参数。您不必对该参数的值执行任何操作。

如果您对此语法的一些历史记录感兴趣,there's a snippet of it here

答案 2 :(得分:8)

Postfix在签名中有一个int参数。

Class& operator++();    //Prefix 
Class  operator++(int); //Postfix 

答案 3 :(得分:-1)