Effective c++条款24:若所有参数皆需类型转换,请为此采用non-member函数

#include
using namespace std;
class Rational {
public:
Rational(int numerator=0, int denominator=1)
:itsNumerator(numerator)
,itsDenominator(denominator)
{}
int numerator() const {return itsNumerator;}
int denominator() const {return itsDenominator;}
/若为member函数,则Rational result2 = 2 * oneEighth;是无法通过编译的;
//因为int类型2没有相应的Rational class,没有
运算后返回Rational这样的操作符
const Rational operator* (const Rational& rhs)
{
cout<<rhs.numerator()<<“/”<<rhs.denominator()<<endl;
return Rational(itsNumeratorrhs.numerator(), itsDenominatorrhs.denominator());
}
*/
private:
int itsNumerator;
int itsDenominator;
};

const Rational operator* (const Rational& rhs, const Rational& rhs1)
{
cout<<rhs.numerator()<<“/”<<rhs.denominator()<<endl;
cout<<rhs1.numerator()<<“/”<<rhs1.denominator()<<endl;
return Rational(rhs1.numerator() * rhs.numerator(), rhs1.denominator() * rhs.denominator());
}

int main() {
Rational oneEighth(1,8);
Rational oneHalf(1,2);
//Rational result = oneHalf * oneEighth;

Rational result1 = oneEighth * 2;
Rational result2 = 2 * oneEighth;//non member * 函数,会将2也隐士转换为Rational从而进行运算
cout  << "test\n";
return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值