一、运算符重载的定义
在C++中,运算符重载是指通过定义新的运算符功能或重新定义已有运算符的功能。通过运算符重载,可以使得特定的运算符能够在不同的数据类型或对象上进行不同的操作,从而提高代码的灵活性和可读性。(简单理解为,可以直接对类的对象进行运算符操作,不需要具体到变量成员函数。)
二、加法运算符重载
代码示例:
Time operator+(const Time &t)const
{
Time sum;//重新定义Time类对象
sum.hour = this->hour + t.hour + (t.minutes + this->minutes)/60;
//当前类对象this和输入类对象t相加
sum.minutes = (this->minutes + t.minutes)%60;
return sum;//返回对象值
}
同理,可以仿照出其他运算符(-、*、/)。
三、运算符示例
代码示例:实现一个计算器类,可以计算整数和小数的+-*/。(你需要重载这些运算符)。
#include <iostream>
#include <string>
using namespace std;
class Computer{
public:
float num1;
Computer():num1{}{}
Computer(float num1):num1(num1){}
};
//全局函数
//定义一个函数,实现两个对象相加属性后返回新的对象
Computer operator+(Computer &s1,Computer &s2)
{
Computer temp;
temp = s1.num1 + s2.num1;
return temp;
}
Computer operator-(Computer &s1,Computer &s2)
{
Computer temp;
temp = s1.num1 - s2.num1;
return temp;
}
Computer operator*(Computer &s1,Computer &s2)
{
Computer temp;
temp = s1.num1 * s2.num1;
return temp;
}
Computer operator/(Computer &s1,Computer &s2)
{
Computer temp;
if(s2.num1 != 0)
{
return temp = s1.num1 / s2.num1;
}
else
{
cout<<"除数不能为0,报错"<<endl;
return 0;
}
}
int main()
{
Computer s1(20);
Computer s2(20.5);
Computer s3 = s1 + s2;
Computer s4 = s1 - s2;
Computer s5 = s1 * s2;
Computer s6 = s1 / s2;
cout<<"s3 = s1 + s2 = "<<s3.num1<<endl;
cout<<"s4 = s1 - s2 = "<<s4.num1<<endl;
cout<<"s5 = s1 * s2 = "<<s5.num1<<endl;
cout<<"s6 = s1 / s2 = "<<s6.num1<<endl;
return 0;
}
运行结果:
40.5
-0.5
410
0.97561