// 运算符重载
// + 运算符
#include <iostream>
#include <cstring>
#include <cstdlib>

using namespace std;

class A
{
private:
    int x;

public:
    explicit A(int x)
    {
        this->x = x;
    }
    void show()
    {
        cout << x << endl;
    }
    // + 运算符重载，类成员函数，双目运算符，只需要一个参数
    A *operator+(A &other);
};

A *A::operator+(A &other)
{
    A *tmp = new A(this->x + other.x);
    return tmp;
}

int main()
{
    A a1(5), a2(6);
    a1.show();
    A *a3 = a1 + a2;
    a3->show();
    delete a3;
    return 0;
}
