技术交流QQ群:1027579432,欢迎你的加入!
1.重载++和--运算符
- 自增++和自减--都是一元运算符,它的前置形式和后置形式都可以被重载。请看下面的例子:
#include "iostream" #include "iomanip" using namespace std; // 时间类 class times{ public: times():m_min(0), m_sec(0){}; public: void set_zero(){m_min = 0; m_sec = 0;} times run(); // 运行 times operator++(); // 前置++ times operator++(int n); // 后置++,在这个函数中参数n是没有任何意义的,它的存在只是为了区分是前置形式还是后置形式 friend ostream & operator<< (ostream &out, const times &t); private: int m_min; int m_sec; }; times times::run(){ ++m_sec; if(m_sec == 60){ m_min++; m_sec = 0; } return *this; } times times::operator++(){ return run(); } times times::operator++(int n){ times t = *this; run(); return t; // 对象本身 } ostream & operator<< (ostream &out, const times &t){ out << setfill('0') << setw(2) << t.m_min << ":" << setw(2) << t.m_sec; return out; } int main(){ times t1, t2; t1 = t2++; cout << "t1: "<< t1 <<endl; cout << "t2: "<< t2 <<endl; t1.set_zero(); t2.set_zero(); t1 = ++t2; cout << "t1: "<< t1 <<endl; cout << "t2: "<< t2 <<endl; return 0; }