C++学习练习
之运算符重载
例如运算符+重载需要用到operator+来进行参数调用
成员函数重载本质调用为
Person p3 = p1.operator+(p2);
全局函数重载本质调用
Person p3 = operator+(p1,p2);
运算符重载也可以发生函数重载
Person operator+(Person &p1, int num){
Person temp;
temp.m_a = p1.m_a + num;
temp.m_b = p1.m_b + num;
return temp;
}
Person p4 = p1 + 30;
代码示例
#include <iostream>
using namespace std;
//加号运算符重载
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;
// }
};
// 可以函数重载
Person operator+(Person &p1, int num){
Person temp;
temp.m_a = p1.m_a + num;
temp.m_b = p1.m_b + num;
return temp;
}
// 全局函数重载+号
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 test1(){
Person p1;
p1.m_a = 10;
p1.m_b = 10;
Person p2;
p2.m_a = 10;
p2.m_b = 20;
//成员函数重载本质调用
// Person p3 = p1.operator+(p2);
//全局函数重载本质调用
// Person p3 = operator+(p1,p2);
Person p3 = p1 + p2;
//可以进行函数重载
// Person p4 = p1 + 30;
cout << "p3.m_a=" << p3.m_a << endl;
cout << "p3.m_b=" << p3.m_b << endl;
// cout << "p4.m_a=" << p4.m_a << endl;
// cout << "p4.m_b=" << p4.m_b << endl;
}
int main(){
test1();
system("pause");
return 0;
}
学习资源:https://www.bilibili.com/video/BV1et411b73Z?p=121