在c++中,如何重载操作符而不通过形参传递对象

in C++, How can I overload an operator without passing an object through the parameters?

本文关键字:形参 对象 操作符 c++ 何重载 重载      更新时间:2023-10-16

例如,我希望下面的代码输出数字6,但是我见过的每个操作符重载的例子都在形参中包含一个"const"对象。

Class MyClass
{
    private:
        int num;
    public:
        //Setter
        void setNum(int x)            {num = x;}
        //Getter
        int getNum()                  {return x;}
        //Overloading + Operator
        MyClass operator + (int add)
        {
        }
};
int Main()
{
    MyClass test;
    test.setNum(2);
    test = test + 4;
    cout << test.getNum();
    return 0;
}

下面是您想要的代码:

class MyClass
{
    private:
        int num;
    public:
        //Setter
        void setNum(int x)            {num = x;}
        //Getter
        int getNum()                  {return num;}
        //Overloading + Operator
        MyClass operator + (int add)
        {
            MyClass copy;
            copy.num = num + add;
            return copy;
        }
};
int main()
{
    MyClass test;
    test.setNum(2);
    test = test + 4;
    std::cout << test.getNum();
    return 0;
}

您的代码有许多编译器错误,这些错误也已被修复。例如,Class应该是Class, Main应该是Main。