首页 > 解决方案 > 如何重载对象 = 常量 int + 对象

问题描述

#include<iostream>
using namespace std;

class mango
{
public:
    int qnt;
    mango(int x = 0)
    {
        qnt = x;
    }
    mango operator+(const int a)
    {
        mango temp;
        temp.qnt = a + this->qnt;
        return temp;
    }
};

int main()
{
    mango obj(5);
    obj = obj + 5;
    cout<<obj.qnt<<endl; // shows 10;
    return 0;
}

现在我要重载object = constant_int + object,也就是

obj = 5 + obj;

我想在左侧保持常量整数并将总和存储在对象中。怎么做?

标签: c++operator-overloading

解决方案


很简单,定义类外的重载

class mango
{
    ...
};

mango operator+(const int a, const mango& b)
{
    ...
}

事实上,通常认为所有对称和反对称运算符都应该在类外定义。所以你的 mango + int 也应该被移出课堂。

mango operator+(const mango& a, const int b)
{
    ...
}

推荐阅读