如何在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