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...这一句的输出了。 因为这个转换不是用户指定的,而是系统根据程序执行的要求自动完成的,因此叫隐式转换。更多推荐
发布评论