形式 operatorop()
例如operator+() 重载了+运算符
op必须是有效的C++运算符
代码
一个时间类
#ifndef __TIME_H__
#define __TIME_H__
class TIME
{
private:
int nHours;
int nMinutes;
public:
TIME();
TIME(int H, int M);
void SetTime(int H, int M);
void ShowTime(void) const;
TIME operator+(const TIME & t) const;
//+运算符的重载
};
#endif
#include "Time.h"
TIME::TIME()
{
}
TIME::TIME(int H, int M = 0)
{
nHours = H;
nMinutes = M;
}
void TIME::SetTime(int H, int M)
{
nHours = H;
nMinutes = M;
}
void TIME::ShowTime(void) const
{
std::cout<<nHours<<":"<<nMinutes<<std::endl;
}
TIME TIME::operator+(const TIME & t) const
{
TIME sum;
sum.nMinutes = t.nMinutes + nMinutes;
sum.nHours = t.nHours + nHours + sum.nMinutes/60;
sum.nMinutes %= 60;
sum.nHours %= 24;
return sum;
}
#include "Time.h"
int main(int argc, char* argv[])
{
TIME a(1,50);
TIME b(2,10);
TIME c = a + b;
c.ShowTime();
return 0;
}
C++内置的+运算符无法对用户自定义的类进行操作,需要进行运算符重载
① c = a + b;
②c = a.operator+(b);