C++运算符重载是允许程序员自定义运算符的行为的一种机制。通过重载运算符,可以在类中定义特定的行为,使得类的对象可以使用运算符进行操作。
加号运算符重载是指重载加号运算符(+),使得类的对象可以使用加号运算符进行相加操作。
通过成员函数重载加号
#include <iostream> //输入输出的头文件
using namespace std;
//#define 宏常量
#define Day 7
//const修饰的变量也为常量
//int addd(int a,int b);//函数的声明
//空指针调用成员函数
class person
{
public:
int m_a;
int m_b;
//成员函数重载加号
person operator+(person &p)
{
person temp;
temp.m_a=this->m_a+p.m_a;
temp.m_b=this->m_b+p.m_b;
return temp;
}
};
void test01()
{
person p1;
p1.m_a=10;
p1.m_b=10;
person p2;
p2.m_a=10;
p2.m_b=10;
//利用成员函数重载加号,person p3=p1.operator+(p2);可简化为person p3=p1+p2;
person p3=p1+p2;
cout<<p3.m_a<<" "<<p3.m_b<<endl;
}
int main()
{
test01();
return 0;
}
和通过全局函数重载加号,如下代码所示
#include <iostream> //输入输出的头文件
using namespace std;
//#define 宏常量
#define Day 7
//const修饰的变量也为常量
//int addd(int a,int b);//函数的声明
//空指针调用成员函数
class person
{
public:
int m_a;
int m_b;
};
//全局函数重载
person operator+(person &p1,person &p2)
{
person temp;
temp.m_a=p1.m_a+p2.m_a;
temp.m_b=p1.m_b+p2.m_b;
return temp;
}
void test01()
{
person p1;
p1.m_a=10;
p1.m_b=10;
person p2;
p2.m_a=10;
p2.m_b=10;
//利用全局函数重载加号,person p3=operator+(p1,p2);可简化为person p3=p1+p2;
person p3=p1+p2;
cout<<p3.m_a<<" "<<p3.m_b<<endl;
}
int main()
{
test01();
return 0;
}
加号重载也可以函数重载
#include <iostream> //输入输出的头文件
using namespace std;
//空指针调用成员函数
class person
{
public:
int m_a;
int m_b;
};
//全局函数重载
person operator+(person &p1,person &p2)
{
person temp;
temp.m_a=p1.m_a+p2.m_a;
temp.m_b=p1.m_b+p2.m_b;
return temp;
}
//函数重载,全局重载加号也可以函数重载
person operator+(person &p1,int num)
{
person temp;
temp.m_a=p1.m_a+num;
temp.m_b=p1.m_b+num;
return temp;
}
void test01()
{
person p1;
p1.m_a=10;
p1.m_b=10;
person p2;
p2.m_a=10;
p2.m_b=10;
//利用全局函数重载加号,person p3=operator+(p1,p2);可简化为person p3=p1+p2;
person p3=p1+p2;
//成员函数重载加号也可以函数重载调用,此时为参数类型不同
person p4=p1+4;
cout<<p3.m_a<<" "<<p3.m_b<<endl;
cout<<p4.m_a<<" "<<p4.m_b<<endl;
}
int main()
{
test01();
return 0;
}