重载类型转换运算符double,int,string
2012-10-07 13:40
393 查看
#include <iostream> #include <cstdio> using namespace std; class F { int n; int d; public: F(int n = 0, int d = 1):n(n),d(d) { } //不要返回值 //类型转换运算符函数,将当前对象转成double //double operator double() operator double() { return n*1.0/d; } operator int() { return int(n*1.0/d + 0.5); //会损失精度,四舍五入 } //转换成字符串 operator string() { char buf[10] = {}; sprintf(buf,"%d/%d",n,d); return buf; //C++自动做了类型转换 return string(buf); } }; void fa(double d) { cout << "in fa d=" << d << endl; } int main() { int x = 3; double d; d = x; //隐式类型转换,int to double F f1(1,2); //到底是怎么转换的呢? //这里f1里就两个数,怎么转换成浮点的? //隐藏在重载函数double里面了? d = (double)f1; //f1.operator double(); d = f1; //和上一句一个意思 fa(f1); //fa里需要double类型的参数 int i1 = f1; //会自动调用operator int()函数 cout << i1 << endl; string str = f1; //会自动调用operator string()函数 cout << str << endl; } /* in fa d=0.5 1 1/2 */
相关文章推荐
- C++中将string类型转换为int, float, double类型
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date
- C++中将string类型转换为int, float, double类型
- VC 中 Cstring 与 int、float、double、char、string数据类型的相互转换
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- Swift3.0之String转换成基本数据类型 Int CGFloat Double
- C++中将string类型转换为int, float, double
- String数据类型转换成long、int、double、float、boolean、char等七种数据类型
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等 .
- 关于C++中string对象向int、float、double类型的转换的方法汇总
- java中关于String类型和double,int类型之间的转换
- C#关于类型之间的转换,Object、int、string、double
- C#枚举 枚举和int以及string类型之间的转换 结构 重载 全局变量
- [Scala--基础]--类型转换(String to Double 、Long、Float和Int)
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等----留着备用
- String数据类型转换成long、int、double、float、boolean、char等七种数据类型
- C++中将string类型转换为int, float, double互转
- c++ int,double等数字类型与string的相互转换