让自定义的类型可以和任意的类型之间转换
2008-04-04 16:57
549 查看
[align=left]定义如下的一个类[/align][align=left] struct cls[/align][align=left] {[/align][align=left] template[/align][align=left] operator T() [/align][align=left] {[/align][align=left] return T();[/align][align=left] }[/align][align=left] [/align][align=left] template< typename T>[/align][align=left] cls(const T&)[/align][align=left] {[/align][align=left] }[/align][align=left] cls(){}[/align][align=left] [/align][align=left] [/align][align=left] };[/align][align=left]现在这个类可以和其它的任意的类型之间进行转换了。测试如下[/align][align=left] [/align][align=left] [/align][align=left] void test()[/align][align=left] {[/align][align=left] cls o;[/align][align=left] cls o2(3);[/align][align=left] cls o3(7.9);[/align][align=left] cout << (int)o << (char) o2 << (double)o3 << endl;[/align][align=left] }[/align][align=left] [/align][align=left]但是现在这种转换是没有意义的。要想使这种转换有意义,我们只需特化它的一些转换方法就行了。例如做如下的特化。[/align][align=left] [/align][align=left] template<>[/align][align=left] cls::cls(const int& a)[/align][align=left] {[/align][align=left] cout << "int -> cls" << endl;[/align][align=left] }[/align][align=left] [/align][align=left] template<>[/align][align=left] cls::operator int()[/align][align=left] {[/align][align=left] cout << "cls->int" << endl;[/align][align=left] return 8;[/align][align=left] }[/align][align=left]通过特化可以在不改变类定义的情况下。为定义的类添加恰当的转型操作,使这种转换成为一个有意义的转换。[/align][align=left] [/align]
相关文章推荐
- 让自定义的类型可以和任意的类型之间转换
- 让自定义的类型可以和任意的类型之间转换
- 让自定义的类型可以和任意的类型之间转换
- 让自定义的类型可以和任意的类型之间转换
- 让自定义的类型可以和任意的类型之间转换
- 让自定义的类型可以和任意的类型之间转换
- 让自定义的类型可以和任意的类型之间转换
- 让自定义的类型可以和任意的类型之间转换
- 让自定义的类型可以和任意的类型之间转换
- null可以被强制类型转换成任意类型的对象
- 数据类型之间可以相互转换
- null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
- JSON: Python Objects与String之间转换【json.dumps把python任意数据类型转换成字符串,json.loads把字符串转换为unicode编码】
- c#自定义类型之间的转换(强制类型转换)
- EventBus,一个可以在Activity、Fragment、Service之间传递任意类型数据的事件总线框架
- null可以被强制类型转换成任意类型的对象
- 自定义可以存放任意类型(含智能指针)的顺序栈
- 编译时检查类型之间是否可以相互转换
- explicit和implicit属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换。
- Golang 奇葩的时间包之Json与struct对象之间互相转换,JsonDate和JsonTime自定义类型如何实现json编码和解码(二)