C++ Primer(第5版) 练习 14.53
练习 14.53 假设我们已经定义了如第522页所示的SmallInt,判断下面的加法表达式是否合法。如果合法,使用了哪个加法运算符?如果不合法,应该怎样修改代码才能使其合法?
SmallInt s1;
double d = s1 + 3.14;
环境:Linux Ubuntu(云服务器)
工具:vim
代码块
SmallInt s1;
double d = s1 + 3.14;
//SmallInt内operator+可以匹配,先将3.14转换为int,再转换为SmallInt。或者,将s1转换为int,int转换为double,执行double加法。两种都可行,会产生二义性。
//需要显示调用某种方式
double d = int(s1) + 3.14;