其他分享
首页 > 其他分享> > 如何在C中用Fraction Object乘以整数常量

如何在C中用Fraction Object乘以整数常量

作者:互联网

我有一个分数类.

我需要对分数对象进行3次操作,即

>将两个Fraction对象相乘.例如F1 * F2
>将一个Fraction对象乘以整数.对于前者F1 * 3
>乘以Fraction对象的整数.对于前者3 * F1.

前两种情况可以通过覆盖Fraction Class *运算符来实现.

Fraction operator*(const Fraction&);
Fraction operator*(const int&);

但如何将整数乘以一个分数对象?第三种情况

有什么建议么??

PS:我不想将整数视为分数对象,例如(3/1),然后进行乘法运算.

解决方法:

您需要将operator重载实现为自由函数,如下所示:

Fraction operator *(int lhs, Fraction rhs)
{
     rhs *= lhs;

     return rhs;
}

请注意,我已经根据Fraction :: operator * =(int)实现了该函数(参见here为什么这被认为是一种好习惯).如果此函数不存在,您可能希望将第二个参数作为const Fraction& rhs并提供不同的实现.

此外,请注意,处理此场景的惯用方法是允许通过单个int参数隐式构造Fraction实例,因此您的约束对我来说似乎有点尴尬.请注意,您的Fraction类的用户可能希望所有算术运算都可行(为什么应该有operator *,而不是operator /?).为了减少在这种情况下要编写的手动代码量,boost operator library可以提供很大的帮助.

标签:c,c11,c14
来源: https://codeday.me/bug/20191008/1874769.html