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

8 c++ operator-overloading prefix-operator postfix-operator

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

template<typename T>
typename list<T>::iterator& list<T>::iterator::operator++()
{
    //stuff
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做的时候

list<int>::iterator IT;
IT++;
Run Code Online (Sandbox Code Playgroud)

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

zar*_*tra 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
};
Run Code Online (Sandbox Code Playgroud)

  • Postfix运算符应该按值返回,而不是引用.我想可能会有非常奇怪的情况,他们可以返回参考,但是该怎么做?不是这个,因为它已经增加了...... (5认同)

Dan*_*ker 12

写一个相同的运算符重载版本,但给它一个类型的参数int.您不必对该参数的值执行任何操作.

如果您对这种语法的历史记录感兴趣,可以在这里找到它的片段.


RC.*_*RC. 8

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

Class& operator++();    //Prefix 
Class  operator++(int); //Postfix 
Run Code Online (Sandbox Code Playgroud)