- 重载运算符:与重载函数相似,但是需要加上operator关键字。
- 成员函数重载
- 全局函数重载
//全局函数 重载+运算符
person operator +(person a, person b)
{
person temp(0,0);
temp.m_a = a.m_a + b.m_a;
temp.m_b = a.m_b + b.m_b;
return temp;
}
+运算符重载:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class person
{
public:
person(int a, int b):m_a(a),m_b(b)
{
}
//成员函数实现重载运算符
//person operator +( person b)
//{
// person temp(0, 0);
// temp.m_a = this->m_a + b.m_a;
// temp.m_b = this->m_b + b.m_b;
// return temp;
//}
int m_a;
int m_b;
};
//全局函数 重载+运算符
person operator +(person a, person b)
{
person temp(0,0);
temp.m_a = a.m_a + b.m_a;
temp.m_b = a.m_b + b.m_b;
return temp;
}
//成员函数重载+实现
void test01()
{
//person a(10, 10);
//person b(20, 20);
//person c = a.operator+(b);
//cout << "C的m_A为:" << c.m_a << endl;
}
//全局函数重载运算符+实现
void test02()
{
person a(10, 10);
person b(10, 10);
person c = a + b;
cout << "C的m_a的值为:" << c.m_a << endl;
}
int main()
{
//test01();
test02();
system("pause");
return EXIT_SUCCESS;
}
<<运算符重载:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class person
{
public:
//成员函数重载<<
person(int a, int b)
{
this->m_a = a;
this->m_b = b;
}
void operator <<(person & p)
{
cout << "p的a的值:" << p.m_a << endl;
cout << "p的b的值:" << p.m_b << endl;
}
int m_a;
int m_b;
};
//全局函数重载<<运算符
ostream& operator <<(ostream &cout,person &p)
{
cout << "p的a的值:" << p.m_a << endl;
cout << "p的b的值:" << p.m_b << endl;
return cout;//实现链式编程
}
//调用成员函数重载的<<运算符
void test01()
{
person p1(10, 10);
p1.operator<<(p1);
}
//调用全局函数重载的<<运算符
void test02()
{
person p1(20, 20);
cout << p1 << endl;//链式编程的应用
}
int main()
{
//test01();
test02();
system("pause");
return EXIT_SUCCESS;
}