Sla*_*zer 4 c++ overloading operator-keyword
我重载了operator ++的前缀版本.如果重载函数不是我的类*的成员,我怎么能重载postfix版本?
#include <iostream>
using namespace std;
class Number{
int number;
public:
Number(int inNr):number(inNr){}
friend void operator++(Number& fst);
};
void operator++(Number& fst){
fst.number=fst.number+1;
}
int main(){
Number nr1(1);
++nr1;
//nr1++; error: no 'operator++(int)' declared for postfix '++'
}
Run Code Online (Sandbox Code Playgroud)
*我理解如果它是类的成员,我可以使用dummy int参数来区分它们.
Mik*_*our 12
非成员重载也使用伪int参数来区分它们:
friend void operator++(Number&); // prefix
friend void operator++(Number&, int); // postfix
Run Code Online (Sandbox Code Playgroud)
请注意,有些人可能希望通过分别返回new和old值来模拟内置运算符的行为:
Number& operator++(Number& fst) {
fst.number=fst.number+1;
return fst; // reference to new value
}
Number operator++(Number& fst, int) {
Number old = fst;
++fst;
return old; // copy of old value
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |