C++ 如何重载对象=常量int+;对象

C++ 如何重载对象=常量int+;对象,c++,operator-overloading,C++,Operator Overloading,我想在左边保持常量整数,并将总和存储在对象中。如何做到这一点?很简单,在类外定义重载 事实上,一般认为所有对称和反对称算子都应该在类外定义。所以你的mango+int也应该移出课堂 class mango { ... }; mango operator+(const int a, const mango& b) { ... } 很简单,在类外定义重载 事实上,一般认为所有对称和反对称算子都应该在类外定义。所以你的mango+int也应该移出课堂 class mango

我想在左边保持常量整数,并将总和存储在对象中。如何做到这一点?

很简单,在类外定义重载

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

class mango
{
    ...
};

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

很简单,在类外定义重载

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

class mango
{
    ...
};

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

您可以定义一个“独立”操作符:
mango操作符+(int,const mango&)
。如果您需要访问
protected
private
成员,您可以使其成为
芒果类
朋友。在这种情况下,它甚至可以内联定义。如果您将操作符
+
实现为一个自由函数,它将提供额外的可能性,例如获得您想要的行为。有关这方面的帮助和更多信息,请参阅。您有机会定义一个“独立”运算符:
mango operator+(int,const mango&)
。如果您需要访问
protected
private
成员,您可以使其成为
芒果类
朋友。在这种情况下,它甚至可以内联定义。如果您将操作符
+
实现为一个自由函数,它将提供额外的可能性,例如获得您想要的行为。有关这方面的帮助和更多信息,请参阅。谢谢,它通过在外部声明函数来工作。我尝试在内部声明函数,结果显示错误,只允许我传递0或1个参数,为什么?我将函数声明为友元,现在它可以工作了。如果在内部声明它(而不是静态声明或友元声明),则
是一个隐式参数。因此,您的
操作符+
将有三个不允许的参数。谢谢,它通过在外部声明函数来工作。我尝试在内部声明函数,结果显示错误,只允许我传递0或1个参数,为什么?我将函数声明为友元,现在它可以工作了。如果在内部声明它(而不是静态声明或友元声明),则
是一个隐式参数。因此,您的
操作符+
将有三个不允许的参数。
class mango
{
    ...
};

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