类的自动转换和强制类型转换
来源:互联网 发布:科比单场81分数据 编辑:程序博客网 时间:2024/05/16 10:16
class Stonet{ private: enum{Lbs_per_stn=14}; int stone; double pds_left; double pounds; public: ........};
转换函数
既然可以将数字转换为类类型,那可以做相反的转换吗?也就是说,是否可以将类类型转换为数字类型,就如如下所示那样?
Stonewt wolfe(285.7);double host=wolfe;
可以这样做,但是不是使用构造函数。构造函数只用于从某种类型到类类型的转换。要进行相反的转换,必须使用特殊的C++运算符函数——转换函数。
转换函数是用户定义的强制类型转换,可以像使用强制类型转换那样使用它们。例如,如果定义了从Stonewt到double的转换函数,就可以使用下面的转换:
Stonewt wolfe(285.7);double host=double(wolfe);double thinker=(double)wolfe;也可以让编译器来觉得如何做:Stonewt wells(20,3);double star=wells;
编译器发现,右侧是Stonewt类型,而左侧是double类型,因此它将查看程序是否定义了与此匹配的转换函数。(如果没有找到这样的定义,编译器将生成错误消息,指出无法将Stonewt赋给double。)
那么,如何创建转换函数呢?要转换为typaname类型,需要使用这种形式的转换函数:
operator typeName();
请注意以下几点:
1)转换函数必须是类方法;
2)转换函数不能指定返回类型;
3)转换函数不能有参数。
例如,转换为double类型的函数原型如下:
operator double();
typeName指出了要转换的类型,因此不需要指定返回类型。转换函数时类方法意味着:他需要通过来对象来调用,从而告知函数要转换的值。因此,函数不需要参数。
要添加将stone_wt对象转换为int类型和double类型的函数,需要将下面的有原型添加到类声明中:
operator int();
operator double();
0 0
- 类的自动类型转换和强制类型转换
- 类的自动类型转换和强制类型转换
- 类的自动类型转换和强制类型转换
- 类的自动转换和强制类型转换
- 类的自动转换和强制类型转换
- C++:类的自动转换和强制类型转换
- C++类的自动转换和强制类型转换
- 自动类型转换和强制类型转换
- java的自动类型转换和强制类型转换
- Java:自动类型转换和强制类型转换的规则
- 基本数据的自动类型转换和强制类型转换
- 自动和强制类型转换
- 类的自动传唤和强制类型转换
- C++之类的自动转换和强制类型转换
- 自动类型提升和强制类型转换
- C++ 类的自动转换与强制类型转换
- 学习C++——类的自动转换和强制类型转换
- 《C++ primer plus》:类的自动转换和强制类型转换
- git教程(关于git的学习笔记选取自廖雪峰)
- iOS Crash Report
- unexpected inconsistency;RUN fsck MANUALLY 解决方案
- 华为C8816电信版ROOT过程
- RTP 协议
- 类的自动转换和强制类型转换
- ssh框架搭建Struts2.06+spring2.5+hibernate3.2整合实例代码教程步骤
- Problem 12:Highly divisible triangular number
- 电子邮件的正则javascript
- 详解Linux命令行下常用svn命令
- Java如何获得一个随机数
- scala协变逆变上界下界---理解篇
- android事件传递
- IOS 使用sqlite