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);

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • preference activity_preference

    preference activity_preference目录目录前言PreferenceActivitypreferences_scenario_1xmlPreferenceActivity演示PreferenceFragmentxml布局文件PreferenceFragmentPreferenceActivity管理Fragment适配前言转来转去又回到了Android,闲话少说,这里是参考Android原生的Setting

  • pycharm中pip install如何使用_pycharm使用pip安装第三方库

    pycharm中pip install如何使用_pycharm使用pip安装第三方库pyCharm如何使用通过CMDpipinstall方式安装的依赖包前言将pyCharm的解释器设置成Python解释器的方法前言在window下通过cmd(win+r打开运行,然后输入cmd,按下回车即可打开)方式来安装Python依赖包是一种方便快捷的方式。但是往往很多时候由于pyCharm与Python安装在不同的路径,即使你已经用cmdpipinstall的方式在你的电…

  • microbiomeViz:绘制lefse结果中Cladogram「建议收藏」

    microbiomeViz:绘制lefse结果中Cladogram「建议收藏」平日经常会分析shotgun宏基因组的数据,我们的pipeline使用MetaPhlAn,Kraken等profiler。这种数据经常会产生一个表格,如下download.file(“https://bitbucket.org/biobakery/biobakery/raw/tip/demos/biobakery_demos/data/metaphlan2/output/SRS014459-Stool_profile.txt”,’SRS014459-Stool_profile.txt’)knitr

  • 解决Oracle锁表[通俗易懂]

    解决Oracle锁表[通俗易懂]1、执行以下语句可查询被锁的表selectb.owner,b.object_name,a.session_id,a.locked_modefromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id;2、执行以下语句可查询被锁的session和serialselectb.username,b.sid,b.serial#,logon_timefromv$locked_objecta,v$session.

  • realsense深度图像保存方法

    realsense深度图像保存方法一般使用realsense时会保存视频序列,当保存深度图像时,需要注意保存的图像矩阵的格式,不然可能造成深度值的丢失。在众多图像库中,一般会使用opencv中的imwrite()函数进行深度图像的保存。一般深度图像中深度值的单位是mm,因此一般使用np.uint16作为最终数据格式保存。例子:importnumpyasnpimportcv2deffun1(…

  • 在eclipse中没有server(需在选项中设置)

    Eclipse中没有Server选项,需要加载插件。步骤如下:①在软件eclipse下的Help->InstallNewSoftware->中,在Workwith中点击Add,如下,加入Name:KeplerLocation:http://download.eclipse.org/releases/kepler②找到选项Web,XML,JavaEEan…

发表回复

您的电子邮箱地址不会被公开。

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