在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

运算符重载中修改对象的状态和操作数希望有隐式转换是什么意思

运算符重载中修改对象的状态和操作数希望有隐式转换是什么意思

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

运算符重载的一个要求,若运算符所需的操作数(尤其第一个操作数)希望有隐式类型转换,则只能选用友元函数。例如,一个复数类Complex的+的重载(它有个构造函数为Complex(double r=0.0,double i=0.0):real(r),imag(i){})。若+重载为友元函数,5.0+c1可以直接使用,因为Complex的构造函数使得实数可以被隐式转换为Complex的类型,这样5.0+c1就会以operator+(Complex(5.0)+c1)的方式来执行,同理c1+0.5也一样。而若+重载为成员函数,则左操作数必须要求为Complex类型,不能是实数(因为调用成员函数的目的对象不会被隐式转换),只有右操作数可以是实数(右操作数是函数的参数,可以隐式转换),即c1+5.0可以,但是5.0+c1会报错。

使用道具 举报

发新帖
国内首家创新型IT技术需求众包服务平台,软件需求就上天盟网! 立即登录 立即注册