运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型.
加法运算符重载的实现方式有两种:
1.成员函数加号运算符重载
2.全局函数运算符重载
具体实现代码如下:
#include<iostream>
using namespace std;
class Add
{
//第1种:成员函数加号运算符重载
//public:
//成员函数加号运算符重载
//Add operator+(const Add& p)
//{
// Add temp;
// temp.m_A = this->m_A + p.m_A;
// temp.m_B = this->m_B + p.m_B;
// return temp;
//}
public:
int m_A;
int m_B;
};
//第2种:通过全局函数加号运算符重载
Add operator+(Add& p1,Add& p2)
{
Add temp;
temp.m_A = p1.m_A + p2.m_A;
temp.m_B = p1.m_B + p2.m_B;
return temp;
}
//运算符重载 也可以发生函数重载
Add operator+(Add& p1, int num)
{
Add temp;
temp.m_A = p1.m_A + num;
temp.m_B = p1.m_B + num;
return temp;
}
void test()
{
Add p1;
p1.m_A = 10;
p1.m_B = 10;
Add p2;
p2.m_A = 15;
p2.m_B = 10;
//成员函数重载本质调用
Add p3 = p1 + p2; // 实质:相当于 Add p3 = p1.operator+(p2);
//全局函数重载本质调用 实质:相当于 Add p3 = operator+(p1,p2);
cout << "p3.m_A =" << p3.m_A << endl;
cout << "p3.m_B =" << p3.m_B << endl;
//运算符重载 也可以发生函数重载 例如:
Add p4 = p1 + 100;
cout << "p4.m_A =" << p4.m_A << endl;
cout << "p4.m_B =" << p4.m_B << endl;
}
int main()
{
test();
system("pause");
return 0;
}
总结1:对于内置的数据类型的表达式的的运算符是不可能改变的
总结2:不要滥用运算符重载