文章目录
- 前言
- 一、格式
- 二、加号运算重载符
- 三、小于号重载
- 总结
前言
本文主要介绍运算符重载,对已有的运算符重载进行重新定义,以适应不同的数据类型
一、格式
返回值类型 operator 符号(参数列表)
例子:Person operator +(Person &p){.......}
- 返回值类型,可以返回一个类(再调用里面的显示函数),或者一个整形,或者一个布尔型(比如两个类进行比较,返回一个布尔型)
- 符号:常见用到运算符重载的有加号(+)、左移(<<)、递增(++)、赋值(=)、关系(!=)
- 参数列表:类尝尝用引用的方式,还可以多个参数
(const Person& p2, int val)
二、加号运算重载符
有一个时间类(Time),成员变量有:小时(hours)、分钟(minutes),补充 Time 类的代码,重载加号运算符,使得程序能够正确运行。
#include <alloca.h>
#include <iostream>
using namespace std;
class Time {
public:
int hours; // 小时
int minutes; // 分钟
Time() {
hours = 0;
minutes = 0;
}
Time(int h, int m) {
this->hours = h;
this->minutes = m;
}
void show() {
cout << hours << " " << minutes << endl;
}
Time operator +(const Time&p){
if((this->minutes+p.minutes)<60){
return Time(this->hours+p.hours,this->minutes+p.minutes);
}
else{
int a=this->minutes+p.minutes-60;
return Time(this->hours+p.hours+1,a);
}
}
};
int main() {
int h, m;
cin >> h;
cin >> m;
Time t1(h, m);
Time t2(2, 20);
Time t3 = t1 + t2;
t3.show();
return 0;
}
最后定义了一个t3来接收,最后还用show函数显示出来参数
三、小于号重载
有一个时间类(Time),成员变量有:小时(hours)、分钟(minutes),补充 Time 类的代码,重载小于号运算符,使得程序能够正确运行。
#include <iostream>
using namespace std;
class Time {
public:
int hours; // 小时
int minutes; // 分钟
Time() {
hours = 0;
minutes = 0;
}
Time(int h, int m) {
this->hours = h;
this->minutes = m;
}
void show() {
cout << hours << " " << minutes << endl;
}
// write your code here......
int operator < (Time &p){
if(this->hours<p.hours){
return 1;
}
else if (this->hours==p.hours&&this->minutes<p.minutes){
return 1;
}
else{
return 0;
}
}
};
int main() {
int h, m;
cin >> h;
cin >> m;
Time t1(h, m);
Time t2(6, 6);
if (t1<t2) cout<<"yes"; else cout<<"no";
return 0;
}
注意此时的返回值类型为int
总结
本文对运算符重载进行了详细介绍,关键字operator,记住前面为返回值类型。