9.7.3 隐式转换带来的二义性

    如果在代码9.13的main函数中加入一条数据语句“cout<<p1;”,编译器将会给出如下错误提示。


    error C2593:'operator<<'is ambiguous

    此时,编译器无法确定应该将p1隐式转换成int型还是double型,这称为转换的二义性,解决的方法如下。

    ❑显式转换。

    ❑在point类中重载操作符<<,这样,便不会发生任何的隐式转换。关于操作符<<的重载将在第14章中进行介绍,同时,还会涉及多个重载函数的选择机制,在稍后会进行介绍。

    就代码9.13而言,如果在point类中只定义了int型转换函数或double型转换函数,编译器不会报错,因为此时只有一个可选转换,不会产生二义性错误。