#include <iostream>
using namespace std;
class length
{
int meter;
public:
length(int m)
{
meter=m;
}
operator double()
{
return (1.0*meter/1000);
}
};
int main()
{
length a(1500);
double m=double(a);
double n=float(a);
double l=int(a);
cout <<"m="<<m<<"km"<<endl;
cout <<"m="<<n<<"km"<<endl;
cout <<"m="<<l<<"km"<<endl;
return 0;
}
结果如下:
m=1.5km
m=1.5km
m=1km
为什么float(a)
和int(a)
只能使用double(Class length)
定义?
答案 0 :(得分:4)
float
和int
有效,因为C ++在数字类型之间具有内置转换功能。特别是,double
可以转换为float
和int
;这就是您的计划中发生的事情:使用您的用户定义的转换运算符执行length
到double
的转换,然后是从double
到{{1}的内置转换执行或float
以将类型强制转换为所需的目标类型。