第四十二课、类型转换函数(下)
一、类型转换函数
1、c++类中可以定义类型转换函数
2、类型转换函数用于将类对象转化为其它类型
3、语法规则:
4、类型转换函数与转换构造函数具有同等的地位
5、类型转换函数使得编译器有能力将类类型转换为其它类型
6、编译器能够隐式使用类型转换函数
#include<iostream> using namespace std; class Test { private: int mValue; public: Test(int i) { mValue = i; } int value() { return mValue; } operator int () { return mValue; } }; int main() { Test t(10); int i = t;//编译器尽量使源码编译通过
//t为对象类型,编译器会去寻找看有没有类型转换函数,发现operator int ()
//所有这里相当于i = t.operator int ()
cout << "i = " << i << endl;//10 return 0; }
二、类类型之间的转换
#include<iostream> using namespace std; class Test; class Value { public: Value() {} explicit Value(Test& t)//没有explicit关键字就会报错,编译器不知道调用哪个 { } }; class Test { private: int mValue; public: Test(int i) { mValue = i; } int value() { return mValue; } operator Value () { Value ret; cout << "operator Value()" << endl; return ret; } }; int main() { Test t(10); Value i = t;//operator Value () return 0; }
三、避免类型转换函数进行隐式转换
1、无法抑制隐式的类型转换函数的调用
2、类型转换函数可能与转换构造函数相冲突
3、工程中以Type toType()的公有成员函数代替类型转换函数
Value toValue () { Value ret; cout << "operator Value()" << endl; return ret; }
四、小结
1、c++可以定义类型转换函数
2、类型转换函数用于将类类型转换为其它类型
3、类型转换函数与转换构造函数具有同等的地位
4、工程中以Type toType()的公有成员函数代替类型转换函数