[英]Overloading postfix operator ++
我重載了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 '++'
}
*我理解如果它是類的成員,我可以使用dummy int參數來區分它們。
非成員重載也使用dummy int
參數來區分它們:
friend void operator++(Number&); // prefix
friend void operator++(Number&, int); // postfix
請注意,有些人可能希望通過分別返回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
}
我相信(我現在無法測試它)你使用dummy int作為操作符重載的第二個參數,即
void operator++(Number& fst, int /*dummy*/){
fst.number=fst.number+1;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.