C++ Primer(第5版) 练习 14.50
练习 14.50 在初始化ex1和ex2的过程中,可能用到哪些类类型的转换序列呢?说明初始化是否正确并解释原因。
struct LongDouble{LongDouble(double = 0.0);operator double();operator float();
};
LongDouble ldObj;
int ex1 = ldObj;
float ex2 = ldObj;
环境:Linux Ubuntu(云服务器)
工具:vim
解释
初始化ex1,没有匹配的类类型转换运算符,会先将类转换为double或float类型,再转换为int,类中定义了两个类型转换运算符,会产生二义性。
初始化ex2,类中有对应的转换运算符,operator float(),可以顺利执行。