Dav*_*vid 0 c++ overloading operator-overloading
Python 3 允许重载*.
例如,
a*b
允许a通过提供方法来定义结果__mul__。
然而,如果该方法返回,则调用NotImplemented,该__rmul__方法b(如果存在)以给出结果。此处记录了这一点。
这样做的一个优点是我可以在b不a知道a.
C++ 中是否有等效的方法__rmul__,或者是否有实现相同或类似事物的方法?
如果我错了,请纠正我,但根据我的理解,您需要为两个不同的类重载一个运算符。
您可以执行如下操作:
#include <iostream>
class A
{
public:
int integer;
};
class B
{
public:
double decimal;
};
//A * B
double operator*(A a, B b)
{
return a.integer * b.decimal;
}
int main()
{
A a{12}; B b{2};
double c = a * b;
std::cout << c;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我重载了operator*来将A和B类型的2个对象相乘。但它只适用于a * b,不适用于b * a。所以你可以这样做:
//B * A
double operator*(B b, A a)
{
return a.integer * b.decimal;
}
Run Code Online (Sandbox Code Playgroud)