使用运算符重载对两个数字进行加法和减法

addition and subtraction of two numbers using operator overloading

#include<iostream>

using namespace std;

class add
{
private: int a,b;
public: add(int x=0)
        {
            a=x;
        }
        add operator+(add const &c)         // sub operator-(sub const &c)
        {                                   //{
            add sum;                        //      sub diff;
            sum.a=a+c.a;                    //      diff.a=a-c.a;
            return sum;                     //      return diff
        }                                   //}
        void print()
        {
            cout<<"sum: "<<a;
        }
};

int  main()
{
add a1(10),a2(5);                           //sub s1(10),s2(5);
add a3=a1+a2;                               // sub s3=s1-s2;
a3.print();                                 // s3.print();
return 0;
}

这里我是分开写的,但是如果我需要在一个代码中同时做这两个怎么办? 我想要一个 C++ 代码同时执行它们

您可以定义任何合理的组合:

Foo operator+(arg);
Foo operator-(arg);
Foo operator*(arg);
Foo operator/(arg);

arg 可以是另一个 Foo 或完全是其他类型。例如:

#include <iostream>

using namespace std;

class Operators {
public:
    Operators() = default;
    Operators(int v) : value(v) {}

    Operators operator+(const Operators &other) {
        return Operators{value + other.value};
    }

    Operators operator+(const int byValue) {
        return Operators{value + byValue};
    }

    Operators operator-(const Operators &other) {
        return Operators{value - other.value};
    }

    Operators operator-(const int byValue) {
        return Operators{value - byValue};
    }

    Operators operator*(const Operators &other) {
        return Operators{value * other.value};
    }

    Operators operator/(const Operators &other) {
        return Operators{value / other.value};
    }

    int value = 0;
};

int main(int, char **) {
    Operators first{10};
    Operators second{20};

    Operators result1 = first + second;
    Operators result2 = first * second;
    Operators result3 = first * 3;
    Operators result4 = second / 2;

    cout << "first + second == " << result1.value << endl;
    cout << "first * second == " << result2.value << endl;
    cout << "first * 3      == " << result3.value << endl;
    cout << "first / 2      == " << result4.value << endl;
}

第一 + 第二 == 30 第一 * 第二 == 200 第一个 * 3 == 30 第一个 / 2 == 10

你会看到我覆盖了带有两个运算符对象的运算符,但我也写了一些带有整数参数的运算符。

我编译并 运行 使用:

g++ --std=c++17 Whatever.cpp -o Whatever && Whatever