C隐式和显式初始化类型转换.docx

C隐式和显式初始化类型转换.docx

ID:55091907

大小:14.64 KB

页数:3页

时间:2020-04-27

C隐式和显式初始化类型转换.docx_第1页
C隐式和显式初始化类型转换.docx_第2页
C隐式和显式初始化类型转换.docx_第3页
资源描述:

《C隐式和显式初始化类型转换.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、个人收集整理-ZQ.隐式和显式初始化隐式初始化();(".")显式初始化;".".隐式和显式类型转换.隐式转换发生在四种情况下*在混合类型地算术表达式中;;被提升为类型*用一种类型地表达式赋值*;()被转换成了*类型地空指针值*用一个表达式传递给一个函数调用();();被提升为类型:*从一个函数返回一个表达式(,){;返回值被提升为类型.}内建类型(.)对像之间默认含有隐式转换用户定义类对象之间可以含有隐式转换.();{:();}();隐式转换显式转换包含四种转换:编译期地转化,不能转换掉地、、或者属性*所有内建类型对象之间地隐式转换都可用.*把空指针转换成目标类型地空指针

2、用.*把任何类型地表达式转换成类型用.*类层次间地上行转换和下行转换也可以用,但下行转换即当把基类指针或引用转换成子类表示时,由于没有动态类型检查,所以是不安全地.反之是安全地.b5E2R。3/3个人收集整理-ZQ:运行期地转换,类层次间地上行转换和下行转换*具有类型检查地功能,下行转换地效果跟是一样地,但下行转换比更安全.*还支持交叉转换,两个类如果有共同地祖先,他们地指针就可以用.:编译期地转化,类型中地常量:任何指针都可以转换成其它类型地指针,可用于如*到*,或者*到*等地转换,因此可能是不安全地.p1Ean。内建类型指针之间不含有隐式转换(*除外),需要显式转换.;

3、*;*;*;*"";*;*;;错误,没有标准地隐式转换.<*>();必须使用在位模式层次地显式转换;错误,没有标准地隐式转换.<*>();显式转换;错误,没有标准地隐式转换.<*>();显式转换;错误,没有标准地隐式转换.<*>(<*>());先后.;;隐式转换到*;;隐式转换到*;错误,没有标准地隐式转换.<*>();,显式转换,并且*隐式转换到*错误,没有标准地隐式转换.<*>,显式转换.;;隐式转换到*;错误,没有标准地隐式转换.<*>();必须使用在位模式层次地显式转换.;错误,没有标准地隐式转换.<*>();显式转换错误,没有标准地隐式转换.<*>;必须使用在位模

4、式层次地显式转换.错误,没有标准地隐式转换.<*>();显式转换.;;隐式转换到*;;隐式转换到*;;隐式转换到*;隐式转换到*显式转换可以消除不必要地提升.3/3个人收集整理-ZQ;;;这段赋值,首先将提升到型,然后与相加,得到结果再截取成.通过显式转换,消除从型到型地不必要提升.<>();用户定义对象之间可以禁止隐式转换.();{:();}();隐式转换被禁止.(<>());显式转换.被声明为地构造函数通常比更好.综合起来说中应该尽量不使用转换,尽量使用显式转换来代替隐式转换.尽量不用显式转换.带单一参数地构造函数在缺省情况下隐含一个转换操作符,请看下面地代码:{:  

5、    ()}(){();将隐式转换为对象,然后赋值}编译器重新编辑上述例子代码,如下:";"被编译器转换成下面这个样子:()实例化一个临时对象;用赋值();地析构函数被激活在很多情况下,这个转换是有意地,并且是正当地.但有时我们不希望进行这种自动地转换,例如:{*:      ();这里不希望进行隐式转换操作}(){    ();    下面是一个程序员地编码;发生一个意想不到地转换:    ;糟糕,被转换为一个,然后被赋值给}为了避免这样地隐式转换,应该象下面这样显式声明该带单一参数地构造函数:{*:      不要隐式转换      ();      (*,);隐式转

6、换}(){    ();    ;现在编译时出错;需要显式转换:    ();好;显式转换    "";        好;此时允许隐式转换}DXDiT。3/3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。