overloading *

overloading *

本文关键字:overloading      更新时间:2023-10-16

我想重载*运算符,以便在我的对象和双重类型/同一对象类型之间进行乘法运算。我已经让操作员超载两次

Rational operator*(const Rational&) const;
Rational operator*(double) const;

第一个例子涵盖了t1*t2的情况;

第二种情况是t1*3.8474;

但我想涵盖第三种情况,即3.8474*t1;

我该怎么做?我的想法告诉我,为了做到这一点,我需要重载double-type*运算符,但我不知道这是否可能?

您可以通过重载全局operator*():来执行3.8474 * t1

Rational operator*(double, const Rational&);

一般来说,我通常用全局函数重载运算符,而不是用成员函数重载运算符。例如,您拥有的成员函数可以与以下全局函数等效地实现:

Rational operator*(const Rational&, const Rational&);
Rational operator*(const Rational&, double);