ReadingLab/Discussion-for-Cpp

课后练习14.52 LongDouble转SmallInt的方式

EnzoFerrari430 opened this issue · 0 comments

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);构造一个临时对象。这种方式不行吗?虽然也会产生二义性。