#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)
定义的情况下工作?
最佳答案
float
和 int
可以工作,因为 C++ 具有内置的数字类型之间的转换。特别是,double
可以转换为 float
和 int
;这就是您的程序中发生的事情:length
到 double
的转换是使用您的用户定义的转换运算符执行的,然后是 double 的内置转换
到 float
或 int
执行以将类型强制转换为所需的目标类型。
关于C++ - 将类转换为其他类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119743/