ReadingLab / Discussion-for-Cpp

C++ 中文讨论区
MIT License
89 stars 63 forks source link

课后练习14.52 LongDouble转SmallInt的方式 #87

Open EnzoFerrari430 opened 5 years ago

EnzoFerrari430 commented 5 years ago

ld = si + ld; 我看很多人都说只能转换成内置类型进行相加operator+(int,float)或者operator+(int,double) 为什么下面这种不行呢 friend SmallInt operator+(const SmallInt &,const SmallInt &); ld可以先转换成float或者double然后再转换成int。SmallInt可以调用SmallInt(int = 0);构造一个临时对象 然后得到SmallInt再转换成int类型,再转换成double最后调用LongDouble(double = 0.0);构造一个临时对象。这种方式不行吗?虽然也会产生二义性。