1.重载运算符
//重载运算符的函数格式
operatorop(arguement-list)
operator+() //重载+运算符
operator-() //重载-运算符
operator[]() //重载[]运算符
operator@() //这种情况是不允许的,只能重载C++中拥有的运算符,而不能直接创造运算符
一个重载运算符的例子
- 普通实现方式
//文件一:myTime0.h
#ifndef MYTIME0_H_
#define MYTIME0_H_
class Time
{
private:
int hours;
int minute;
public:
Time();
Time(int h,int m = 0);
void Addmin(int m);
void AddHr(int h);
void Reset(int h = 0, int m = 0);
Time Sum(const Time & t) const;
void show() const;
};
#endif
//文件二: mytime0.cpp
#include<iostream>
#include"mytime0.h"
Time::Time()
{
hours = minutes = 0;
}
Time::Time(int h, int m)
{
hours = h;
minutes = m;
}
void Time::Addmin(int m)
{
minutes += m;
hours += minutes / 60;
minutes %= 60;
}
void Time::AddHr(int h)
{
hours += h;
}
void Time::Reset(int h, int m)
{
hours = h;
minutes = m;
}
Time Time::Sum(const Time & t) const
{
Time sum;
sum.minutes = minutes + t.minutes;
sum.hours = hours + t.hours + sum.minutes/60;
sum.minutes %= 60;
return sum;
}
void Time::Show() const
{
std::cout << hours << ":" << minutes << std::endl;
}
//测试文件 useTime0.cpp
#include<iostream>.
#include"mytime0.h"
int main()
{
using std::cout;
using std::endl;
Time planning;
Time coding(2,40);
Time fixing(5,55);
Time total;
cout << "planning time = ";
planning.show();
cout << endl;
cout << "coding time = ";
coding.show();
cout << endl;
cout<< "fixing time = ";
fixing.show();
cout << endl;
total = coding.Sum(fixing);
cout << "coding.Sum(fixing) = ";
total.show();
cout << endl;
return 0;
}
- 使用重载运算符实现
//文件一:myTime1.h
#ifndef MYTIME1_H_
#define MYTIME1_H_
class Time
{
private:
int hours;
int minute;
public:
Time();
Time(int h,int m = 0);
void Addmin(int m);
void AddHr(int h);
void Reset(int h = 0, int m = 0);
Time operator+(const Time & t) const;
void show() const;
};
#endif
//文件二: mytime1.cpp
#include<iostream>
#include"mytime0.h"
Time::Time()
{
hours = minutes = 0;
}
Time::Time(int h, int m)
{
hours = h;
minutes = m;
}
void Time::Addmin(int m)
{
minutes += m;
hours += minutes / 60;
minutes %= 60;
}
void Time::AddHr(int h)
{
hours += h;
}
void Time::Reset(int h, int m)
{
hours = h;
minutes = m;
}
Time Time::operator+(const Time & t) const
{
Time sum;
sum.minutes = minutes