什么是隐式类型转换?这个例子又哪里体现了这个特点?

求帮助classRMB{public:RMB(unsignedintd,unsignedintc);RMB(doublevalue);friendRMBoperator+... 求帮助
classRMB{
public:
RMB(unsigned intd, unsigned int c);
RMB(double value);
friend RMB operator+(RMB &, RMB &);
……
};
voidmain()
{RMB s(5.8); s=RMB(1.5)+s;
s=1.5+s; s= s+1.5;
s=s+1;
}
顺便说一下显式类型转换是怎么回事。。。感激不尽。。
§优点:有了转换运算符,不必提供对象参数的重载运算符§ 缺点:无法提供其类对象运算符操作的真正含义
说这是显示的有点。什么意思 有点看不懂 。
展开
 我来答
真相很简单
推荐于2016-12-01 · TA获得超过643个赞
知道小有建树答主
回答量:539
采纳率:50%
帮助的人:425万
展开全部
显式类型转换就是 转换的目标类型显式写出来

s=RMB(1.5)+s

1.5本身是float型,显式强制转换为RMB型,相当于实例化
追问
隐式呢?
还有 那个§优点:有了转换运算符,不必提供对象参数的重载运算符§ 缺点:无法提供其类对象运算符操作的真正含义
什么意思
追答
隐式就是不用写明

float a=8.0;
int b=a

一般来说,转换运算符与转换构造函数(即带一个参数的构造函数)是互逆的,如有了构造函数Test(int),那么最好有一个转换运算符int()。这样就不必提供对象参数重载运算符了,如Test a1(1);Test a2(2); Test a3; a3 = a1+a2;就不需要重载+号操作符了,因为对于a1+a2的运算,系统可能会先找有没有定义针对Test的+号操作符,如果没有,它就会找有没有针对Test类转换函数参数类型的+号操作符(因为可以将+号运行结果的类型通过转换函数转换为Test对象),因为Test类有个int类型的参数,对于int类型有+操作符,所以a1+a2真正执行的是Test(int(a1) + int(a2));即Test(3);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式