概念:对已经有的运算符进行重新定义,赋予另一种运算的形式,来适用于不同的数据类型。
使用operator关键字来进行重载
下面展示对于类中的加法重载
#include<iostream>
#include<cstring>
using namespace std;
class Person
{
public:
//成员函数的重载方法 ,对于一个实例化的对象 传一个参数 然后输出这两个的+
/*Person operator+(Person &p) //重载加号运算符
{
Person temp;
temp.value_a=this->value_a+p.value_a;
temp.value_b=this->value_b+p.value_b;
return temp;
}*/
int value_a;
int value_b;
};
Person operator+(Person p1,Person p2) //全局函数的重载 传两个参数
{
Person temp;
temp.value_a=p1.value_a+p2.value_a;
temp.value_b=p1.value_b+p2.value_b;
return temp;
}
void test1() //成员函数重载
{
Person p2,p1;
p1.value_a=10,p1.value_b=20;
p2.value_a=30,p2.value_b=40;
//Person p3=p1.operator+(p2); //真正写法
Person p3=p2+p1; //使用重载后的加号
cout<<"成员函数重载后p3.a="<<p3.value_a<<endl;
cout<<"成员函数重载后p3.b="<<p3.value_b<<endl;
}
void test2() //全局函数重载
{
Person p2,p1;
p1.value_a=10,p1.value_b=20;
p2.value_a=30,p2.value_b=40;
//Person p3=p1.operator+(p2); //真正写法
Person p3=p2+p1; //使用重载后的加号
cout<<"全局函数重载后p3.a="<<p3.value_a<<endl;
cout<<"全局函数重载后p3.b="<<p3.value_b<<endl;
}
int main()
{
//test1();
test2();
}