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

标签 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) 定义的情况下工作?

最佳答案

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

关于C++ - 将类转换为其他类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119743/

相关文章:

c++ - 回调参数 C++ 中的协方差

c++ - 非静态数据成员的无效使用

java - 类转换异常错误 fragment

将字符串转换为 float

java - 我可以将对象构造函数存储到数组或哈希表中吗?

c - 将 char 指针类型转换为整数指针

静态 vs 函数静态 vs 成员函数静态的 C++ 内存布局

c++ - 为所有项目配置 OpenCV Visual studio 2010

C++ 类,与不同用户一起处理一个文件

c++ - 带/不带类的回调函数指针 C++