#include<iostream>
#include<string>
using namespace std;

class person {
public:
    int age;
    int height;


    //运算符重载函数 operator,这个operator是c++帮我们取的,相当于任何人取的任何名字的统一
    //这里是函数重载版本的运算符重载,还有一种是全局函数的运算符重载
    // 成员函数运算符重载的本质调用是 p1.operator+(p2);
    //person operator+(person &p) {
    //  person temp;
    //  temp.age= this->age + p.age;
    //  temp.height =this->height+ p.height;
    //  return temp;
    //}
};

void test1() {
    person p1;
    p1.age = 10;
    p1.height = 100;
    person p2;
    p2.age = 8;
    p2.height = 100;
    //person p3 = p1 + p2; //运算符不知道这样到底要如何相加,需要运算符重载函数
    //cout << "p3的age:" << p3.age << "p3的height:" << p3.height << endl;
}


//全局函数的运算符重载

person operator+(person& p1, person& p2) {
    person temp;
    temp.age = p1.age + p2.age;
    temp.height = p1.height + p2.height;
    return temp;
}
int main() {
    test1();
    person p1;
    p1.age = 11;
    p1.height = 110;
    person p2;
    p2.age = 12;
    p2.height = 120;

    //全局函数运算符重载的本质是 person4 = operator+(p1,p2);
    //不论是全局的还是成员的运算符重载,都可以直接写成 person p4 = p1+p2
    person p4 = p1 + p2;
    //使用全局函数的运算符重载一样可以正常输出

    cout << "p4的age:" << p4.age << "p4的height:" << p4.height << endl;

}

最后修改:2022 年 12 月 05 日
如果觉得我的文章对你有用,请随意赞赏