Effective C++ 条款24

Effective C++ 条款24

大家好,又见面了,我是全栈君。

若全部參数皆需类型转换,请为此採用non-member函数

我们直奔主题
假设你定义一个有理数类例如以下

class Rational{
public:
    Rational(int numerator=0, int denominator=1);//非explicit。同意隐式转换
    const Rational operator*(const Rational& rhs);  
    .......................
};

result=oneHalf*2;//正确。相当于oneHalf.operator*(2);
result=2*oneHalf;//错误,相当于2.operator*(oneHalf);

我们能够看到result=2*oneHalf;这句无法通过编译,由于编译器找不多这样一个函数。那为什么result=oneHalf*2;这句话能通过编译?这是由于此时的类Rational能够进行隐式转换。

为了能运行result=2*oneHalf;这句,我们能够定义一个非member函数。例如以下

const Rational operator*(const Rational& lhs, const Rational& rhs);
result=oneHalf*2;//正确。相当于operator*(oneHalf,Rational temp(2));
result=2*oneHalf;//正确,相当于operator*(Rational temp(2),oneHalf);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116546.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jmeter并发测试1000_java如何提高并发

    jmeter并发测试1000_java如何提高并发Jmeter并发测试场景多接口

    2022年9月27日
    3
  • grahphics_blitz

    grahphics_blitz1.前言Graphics的Blit方法是比较简单也是比较常用的方法。最简单的作用是将一张纹理绘制到另一张纹理中。而在此方法中可以指定一种材质来实现特殊的效果,所以常和OnRenderImage方法配

    2022年8月5日
    5
  • 使用Golang实现PHP的Addslashes和Stripslashes「建议收藏」

    使用Golang实现PHP的Addslashes和Stripslashes「建议收藏」//addslashes()函数返回在预定义字符之前添加反斜杠的字符串。//预定义字符是://单引号(’)//双引号(”)//反斜杠(\)funcAddslashes(strstring)string{ tmpRune:=[]rune{} s…

    2022年8月30日
    2
  • Linux那些事儿之我是Hub(26)支持计划生育–看代码的理由

    Linux那些事儿之我是Hub(26)支持计划生育–看代码的理由北大校长马寅初先生曾斩钉截铁地跟讲:”中国人口太多是因为农村晚上没有电.”因此,为了支持计划生育这项基本国策,每一个男人都有义务认真看一下电源管理的代码.另一方面,虽然现在已经不住在农村了,但我一直坚定不移的认为,这个世界,最慢的是我家的网速,最快的是我家电表的转速.所以,为了了解如何让电表转速更慢,让我们一起来看看usb子系统里是如何支持电源管理的吧.上节说了应该从usb_sus…

    2022年5月30日
    32
  • 关于JS全局变量问题

    关于JS全局变量问题最近在easyui使用全局变量的时候老是执行if判断语句,而不执行顺序下来的局部赋值。导致老是提示undefined;经网上查询得知JS全局变量时:当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope。Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{}来划分

    2022年6月3日
    34
  • navicat15.0.23.0激活码【2021.10最新】

    (navicat15.0.23.0激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsa…

    2022年3月27日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号