示例1:分数类对象的相反数
class CFraction{
private:
int nume; // 分子
int deno; // 分母
public:
CFraction(int nu=0,int de=1):nume(nu),deno(de) {}
CFraction operator-(const CFraction &c); //两个分数相减,结果要化简
CFraction operator-(); //取反一目运算
};
// 分数相减
CFraction CFraction:: operator-(const CFraction &c)
{
CFraction t;
t.nume=nume*c.deno-c.nume*deno;
t.deno=deno*c.deno;
t.simplify();
return t;
}
// 分数取负号
CFraction CFraction:: operator-()
{
CFraction x;
x.nume=-nume;
x.deno=deno;
return x;
}
案例:Time类的++
#include <iostream>using namespace std;class Time{public: Time( ) { minute=0; sec=0; } Time(int m,int s):minute(m),sec(s) { } Time operator++( ); Time operator++(int); void display( ) { cout<<minute<<":"<<sec<<endl; }private: int minute; int sec;};Time Time::operator++( ){ if(++sec>=60) { sec-=60; ++minute; } return *this;} Time Time::operator++(int){ Time temp(*this); sec++; if(sec>=60) { sec-=60; ++minute; } return temp;} int main( ){ Time time1(34,59),time2; cout<<" time1 : "; time1.display( ); ++time1; cout<<"++time1: "; time1.display( ); time2=time1++; //将自加前的对象的值赋给time2 cout<<"time1++: "; time1.display( ); cout<<" time2 :"; time2.display( ); //输出time2对象的值 return 0;}