C++显式类型转换.doc

C++显式类型转换.doc

ID:57631395

大小:36.00 KB

页数:5页

时间:2020-08-29

C++显式类型转换.doc_第1页
C++显式类型转换.doc_第2页
C++显式类型转换.doc_第3页
C++显式类型转换.doc_第4页
C++显式类型转换.doc_第5页
资源描述:

《C++显式类型转换.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++显式类型转换C++提供了四个显式的数据类型转换函数 1reinterpret_cast(在编译期间实现转换) reinterpret_cast类型转换函数将一个类型的指针转换成另一个类型的指针。这种转换不用于修改指针变量值数据存放的格式(不改变指针变量值),只需在编译期间重新解释指针的类型就可以做到。 reinterpret_cast可以将指针值转换为一个整型数。但是不能用于非指针类型的转换,否则将不会通过编译。 什么时候使用reinterpret_cast进行数据类型的转换:              (1)将基本类型指针转换成另一个类型的指针。例如:基本类

2、型指针的转换doubled=9.3;double*pd=&d;int*pi=reinterpret_cast(pd);//相当于隐式转换int*pi=(int*)pd;(2)将一个类的指针转换为另一个类的指针。类指针类型的转换:classA{};classB{};A*pa=newA;B*=reinterpret_castpa;(3)不能转换非指针类型例如:将int类型转换为float类型时是不能够转换成功的inti=8;doubledl=reinterpret_cast(i); (4)不能将一个const指针转换成void*类型的

3、指针constint*pci=0;void*pv=reinterpret_cast(pci); 2const_cast(在编译期间实现转换)const_cast用于去除指针变量的常量属性,将它转换为一个对应指针类型的普通变量,反过来,也可以将一个非常量的指针变量转换为常量指针变量。这种转换是在编译期间作出的类型更改。(1)将常量指针变量转换为对应指针类型的普通变量        constint*pci=0;        int*pj=const_cast(pci);//相当于隐式转换int*pj=(int*)pci;(2)将普通指针变量

4、转换为一个常指针变量        int*pi=0;        constint*pcj=const_cast(pi);//相当于隐式转换constint*=(int*)pi(3)将类的常指针变量转换为类的普通指针变量          constA*pca=newA;          A*pa=const_cast(pca);//相当于隐式转换A*pa=(A*)pca;(4)无法将非指针的常变量转换为普通变量,无法将非指针的普通变量转换为常变量。          inti=0;          constintcj=con

5、st_cast(i);//非指针转换,不能通过编译(5)但可以通过隐式转换将非指针的普通变量转换为常变量。          inti=0;          constintck=(constint)(i);3stactic_cast(在编译期间实现转换)   stactic_cast主要用于基本类型之间和具有继承关系的类型之间的转换,这种转换一般会改变变量的内部表示方式,因此static_cast用于指针的转换没有太大的意义。即使允许指针类型的转换,也不及reinterprret转换的效率高。(1)基本类型之间的转换         inti

6、=0;         doubled =static_cast();(2)继承类型转换为基类        classBase{};        classDerived:publicBase{};        Derivedd;        Baseb=static_cast(d);(3)继承类与基类指针进行转换编译能通过,但是基类转换为继承类指针具有一定的危害性        Dereived*pd=newDerived;        Base*pb=static_cast(pd);(4)不能使用stat

7、ic_cast转换基本类型的指针        int*pi=0;        double*pd=static_cast(pi);        (5)不能把基类转换为继承类或转换无继承关系的类的指针 4dynamic_cast(在运行期间实现转换,并可以返回转换成功与否的标志)运算符dynamic_cast可以针对两种数据类型做强制转换:指针类型和引用类型。这两种类型的情况是不一样的。下面讨论如下:1、对指针的强制转换   dynamic_cast(p);   如果p的类型为T*,或者为D*,且T是D的一个可以访问的基类,结果跟我们

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

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

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