Code Bye

关于C++中转换构造函数编译系统自动调用的问题

程序是实现复数的加法,通常情况下是需要两个Complex类的对象作参数(本人用的是友元函数),现在其中有一个参数是浮点型,例如2.5+c (c是Complex类的对象),当然这种情况下可以写两个”+”号的重载函数
Complex operator + (Complex &,double);和Complex operator + (double,Complex &); ,
为了方便,本人想到书上说”若声明了double的转换构造函数,编译系统会自动调用转换构造函数使它成为Complex类的形式”.
本人用了这种方法,但第一次没成功
friend Complex operator + (Complex&,Complex&);
提示没有找到接受“double”类型的左操作数的运算符(或没有可接受的转换)
然后对照例题发现例题是这样写的
friend Complex operator + (Complex c1,Complex c2);调试后发现是对的
所以本人问一下:此处”引用对象”和”直接传递对象”有什么区别?
解决方案:40分

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于C++中转换构造函数编译系统自动调用的问题