先来看一段代码:
1 2 3 |
circle c1; string strc21 = c1; //这句编译通不过 cout<<strc21<<endl; |
string strc21 = c1; //这句编译通不过,这句是将circle类型转成string字符类型
这样写非常方便,但要在类中先定义类型转换函数,这里要转成string字符类型。类型转换函数定义就如下:
1 |
operator string() |
可以看到类型转换函数有关键字operator,应该跟操作符函数有点关系。其实类型转换函数是一种特殊的一元操作符函数。
类型转换函数用途就是将自定义的类类型转成其它指定类型。这样在写代码时会非常方便,从上例可以看出。
好了,现在写出一段完整的类型转换函数的运用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
//梁笔记 //zouzhongliang.com #include <iostream> #include <string> using namespace std; class circle { private: double x,y; double radius; string doubleToString(double num) { char str[256]; sprintf(str, "%lf", num); string result = str; return result; } public: circle(){ x = 0; y = 0; radius = 10; } ~circle(){ } operator string(){ return doubleToString(x) +" " + doubleToString(y) +" " + doubleToString(radius); } }; int main() { circle c1; string strc21 = c1; cout<<strc21<<endl; return 0; } |