数字可以转换成对象吗?不理解,求高人指点。play (aa &x,int n) 这是个函数aa是个类class aa{}aa:aa(double
数字可以转换成对象吗?不理解,求高人指点。
play (aa &x,int n) 这是个函数
aa是个类
class aa
{
}
aa:aa(double abc)
{
构造函数
}
当调用play(88,8)的时候,因为第一个参数应该是aa的对象,遇到int参数的时候,编译器去找aa的构造函数,找不到aa(int) 。但是找到了aa(double),能匹配,因此他吧int转换成double ,然后用aa(double)吧它转换成另一个aa对象。数字竟然可以转换成对象?我不明白。。就是说我调用的play (88,8)的88成了对象了?但是问题是他是一个参数,并且我程序运行里还用到了88?
[解决办法]
这就对了,构造函数的参数个数为1的时候,会存在一个数据类型的隐式转换过程
你的类代码可能没有贴全。
你可以在类中构造函数的生命前 加个 explicit 关键字,应该能限制这种隐式转换了。
