1.加号运算符重载
对于内置的数据类型编译器知道如何进行运算,但是对于自定义的数据类型,编译器不知道如何运算。可以利用运算符重载让符号有新的含义,利用加号重载,实现
Person p1 + Person p2(Person类型数据相加的情况)
2.利用成员函数和全局函数都可以实现重载。关键字是 operator+
3.成员的本质:p1.operator+(p2)
4.全局本质:operatr+(p1,p2)
5,调用是可以使用简化版 p1 + p2
6.运算符重载也可以发生函数重载
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class Person
{
public:
Person(){} //默认构造函数
Person(int a, int b) :m_A(a), m_B(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;
}*/
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(10, 10);
Person p2(20, 20);
Person p3 = p1 + p2;
cout << "p3.m_A=" << p3.m_A << endl;
cout << "p3.m_B=" << p3.m_B << endl;
//运算符重载可以发生函数重载
/*p1 + 10;*/
}
int main()
{
test01();
system("pause");
return EXIT_SUCCESS;
}