Monday 21 January 2019

自增/自减运算符的重载


#include <iostream>
using namespace std;
class CDemo {
 int n;
public:
 CDemo(int i=0):n(i){}
 CDemo operator++(); //前置
 CDemo operator++(int);//后置
 operator int() { return n; }
 friend CDemo operator--(CDemo&);
 friend CDemo operator--(CDemo&, int);
};
CDemo CDemo::operator++() {
 n++;
 return *this;
}
CDemo CDemo::operator++(int k) {
 CDemo tmp(*this);
 n++;
 return tmp;
}
CDemo operator--(CDemo & d) {
 d.n--;
 return d;
}
CDemo operator--(CDemo & d, int) {
 CDemo tmp(d);
 d.n--;
 return tmp;
}
int main() {
 CDemo d(5);
 cout << (d++) << ",";
 cout << d << ",";
 cout << (++d) << ",";
 cout << d << "," << endl;
 cout << (d--) << ",";
 cout << d << ",";
 cout << (--d) << ",";
 cout << d << endl;
 return 0; 
}

No comments:

Post a Comment