4
#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)

4

1 回答 1

4

float并且int可以工作,因为 C++ 具有数字类型之间的内置转换。特别是,double可以转换为floatint; 这就是您的程序中发生的情况:使用用户定义的转换运算符执行lengthto的转换,然后执行 from to ordouble的内置转换以将类型强制转换为所需的目标类型。doublefloatint

于 2013-06-15T02:53:17.053 回答