本文就加法运算符重载进行讲解,运算符重载的意义:用户可以设置不同类型的运算。
简单的来说,int a = 10; int b = 20;计算int c = a+b;显然c=30;
class Person{
int money; /私房钱
};
Person p1;
p1.money = 100;
Person p2;
p2.money = 200;
Person p3;
对于上面的块来说,p1有100块,p2有200块。然后p3说他的钱是他们的总和。
当然p3 = p1 + p2是不可能直接得到p3的钱数,因为编译器不认识这样的类型相加。
// 下面就通过常规的做法来实现
#include
using namespace std;
//创建人类
class Person{
public:
int money;
};
// 常规的做法
Person PersonAdd(const Person p1, const Person p2){
Person p;
p.money = p1.money + p.money;
return p;
}
//测试
void test01(){
Person p1;
p1.money = 100;
Person p2;
p2.money = 200;
Person p3 = PersonAdd(p1, p2);
}
int main(){
test01();
system("pause"):
return 0;
}
// 通过运算符重载实现
#include
using namespace std;
//创建人类
class Person{
public:
// 加法运算符重载实现,将其看作为operator+为函数名的函数
Person operator+(const Person& p1){
Person p;
p.money = this->money + p1->money;
return p;
}
int money;
};
//测试
void test01(){
Person p1;
p1.money = 100;
Person p2;
p2.money = 200;
//Person p3 = p1.operator+(p2);//编译器是这样去调用的
//可以简化为:
Person p3 = p1 + p2;
}
int main(){
test01();
system("pause"):
return 0;
}