C 类型转换
2008-02-23 05:25:41来源:互联网 阅读 ()
类型的自动隐式转换
C 语言编译系统提供的内部数据类型的自动隐式转换规则如下:
1. 程式在执行算术运算时,低类型能够转换为高类型。
2. 在赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
3. 当在函数调用时,将实参值赋给形参,系统隐式地将实参转换为形参的类型后,赋给形参。
4. 函数有返回值时,系统将自动地将返回表达式类型转换为函数类型后,赋值给调用函数。
在以上情况下,系统会进行隐式转换的。当在程式中发现两个数据类型不相容时,又不能自动完成隐式转换,则将出现编译错误。例如:
int * p = 100;
在这种情况下,编译程式将报错,为了消除错误,能够进行如下所示的强制类型转换:
int * p = (int *)100;
将整型数100显式地转换成指针类型。
构造函数具备类型转换功能
在实际应用中,当类定义中提供了单个参数的构造函数时,该类便提供了一种将其他数据类型的数值或变量转换为用户所定义数据类型的方法。因此,能够说单个参数的构造函数提供了数据转换的功能。下面通过一个例子进一步说明单参数构造函数的类型转换功能。
#include class A { public: A() { m=0; } A(double i) { m=i; } void print() { cout< double m; }; void main() { A a(5); a=10; file://a和10是不同的数据类型 a.print(); } |
程式的输出结果为:
10
在该程式中,赋值语句a=10;中,赋值号两边数值10和对象a是两上不相容的数据类型,可是他却能顺利通过编译程式,并且输出显示正确结果,其主要原因是得益于单参数的构造函数。编译系统选通过标准数据类型转换,将整型数值10转换成double型,然后,再通过类中定义的单参数构造函数将double型数值转换为A类类型,最后把他赋值给a。这些转换都是自动隐式完成的。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C 基类和派生类
下一篇: C 类的静态成员(static
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash