C ++ - 将类转换为其他类型

时间:2013-06-15 02:48:23

标签: c++ class casting

#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)定义?

1 个答案:

答案 0 :(得分:4)

floatint有效,因为C ++在数字类型之间具有内置转换功能。特别是,double可以转换为floatint;这就是您的计划中发生的事情:使用您的用户定义的转换运算符执行lengthdouble的转换,然后是从double到{{1}的内置转换执行或float以将类型强制转换为所需的目标类型。

相关问题