C++操作符重载-------类成员操作符重载

1.  语法

返回类型 类名::operator 操作符(形参表)

{

       函数体代码;

}

2.   实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <ctime>
 
using namespace std;
class StopWatch{
public:
    StopWatch();//构造函数
    void setTime(int newMin,int newSec);//设置秒表时间
    StopWatch operator - (StopWatch&);//计算两个秒表的时间
    void showTime();
private:
    int min;
    int sec;
};
 
StopWatch::StopWatch()
{
    min=0;
    sec=0;
}
 
void StopWatch::setTime(int newMin,int newSec)
{
    min=newMin;
    sec=newSec;
}
 
StopWatch StopWatch::operator - (StopWatch& anotherTime)
{
    StopWatch tempTime;
    int seconds;//两个秒表时间间隔的秒数
 
    seconds=min*60+sec-(anotherTime.min*60+anotherTime.sec);
    if(seconds<0)
        seconds=-seconds;
    tempTime.min=seconds/60;
    tempTime.sec=seconds%60;
    return tempTime;
}
 
void StopWatch::showTime()
{
    if(min>0)
        cout<<min<<"minutes"<<sec<<"seconds\n";
    else
        cout<<sec<<"seconds\n";
 
}
 
int main()
{
    StopWatch startTime,endTime,usedTime;
    cout<<"按回车开始!";
    cin.get();//等待用户输入
    time_t curtime=time(0);//获取当前系统时间
    tm tim=*localtime(&curtime);//根据当前时间获取当地时间
    int min,sec;
    min=tim.tm_min;//得到当地时间的分
    sec=tim.tm_sec;//得到当地时间的秒
    startTime.setTime(min,sec);
    cout<<"按回车结束!";
    cin.get();//等待输入
    curtime=time(0);
    tim=*localtime(&curtime);
    min=tim.tm_min;
    sec=tim.tm_sec;
    endTime.setTime(min,sec);
 
    usedTime=endTime-startTime;
    cout<<"用时。。。";
    usedTime.showTime();
    return 0;
}

  其中包含以下信息

     a.  函数名是operator —,表示重载操作符  -;

   b.  StopWatch::表示重载该操作符的类是StopWatch类;

  c.  该函数返回类型是StopWatch类型

  d.  该函数带一个参数,参数类型是StopWatch类,并以引用的形式传。

C++操作符重载-------类成员操作符重载

上一篇:codeforces 425C Sereja and Two Sequences(DP)


下一篇:linux环境中,查看域名的DNS信息?