C++隐式转换

编程入门 行业动态 更新时间:2024-10-25 19:22:28
C++隐式转换 class integer{ public : integer(int ii=0){i=ii;}//隐式类型转换 friend integer operator+(integer&,integer&); private: int i; }; integer operator+(integer&x,integer&y){ return x.i+y.i; } void main(){ integer a(10),b(20),c; c=a+b; c=a+4; c=4+a; } 不知道这个是怎么个隐式类型转换的。麻烦说具体些呀,多谢。

最满意答案

执行到c=a+4这一句时,机器意识到需要两个integer类型才能完成加法运算。但是右边的运算数是一个int类型,因此尝试将int类型转换成integer类型,找到了integer的构造函数能够完成这个任务。因此创建了一个临时的integer类型,调用了构造函数(参数是4)。在完成加法后,临时的integer类型被销毁。你可以将integer的构造函数改成: integer(int ii=0){i=ii; printf("implicit transformation!"); }//隐式类型转换 在c=a+4这个地方设断点,然后再点击继续,就会看到implicit...这一句的输出了。 因为这个转换不是用户指定的,而是系统根据程序执行的要求自动完成的,因此叫隐式转换。

更多推荐

本文发布于:2023-08-07 23:09:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1466441.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:隐式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!