static_cast、dynamic_cast、const_cast作用

static_cast、dynamic_cast、const_cast作用

ID:37334754

大小:20.30 KB

页数:7页

时间:2019-05-22

static_cast、dynamic_cast、const_cast作用_第1页
static_cast、dynamic_cast、const_cast作用_第2页
static_cast、dynamic_cast、const_cast作用_第3页
static_cast、dynamic_cast、const_cast作用_第4页
static_cast、dynamic_cast、const_cast作用_第5页
资源描述:

《static_cast、dynamic_cast、const_cast作用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、static_cast、dynamic_cast、const_cast作用C-stylecast举例:inti;doubled;i=(int)d;上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i(注意d本身的值并没有发生改变)。这就是典型的c-style类型转换。下面是一个简单的程序:#includeusingnamespacestd;intmain(void){        inti;        doubled=11.29;        i=(int)d;       

2、 cout<(expressi

3、on)   说明:该运算符把expression转换为typeid类型,但没有运行时类型检查来确保转换的安全性。   用途:   a)用于类层次结构中基类和派生类之间指针或者引用的转换。up-casting(把派生类的指针或引用转换成基类的指针或者引用表示)是   安全的;down-casting(把基类指针或引用转换成子类的指针或者引用)是不安全的。   b)用于基本数据类型之间的转换,如把int转换成char,这种转换的安全性也要由开发人员来保证。   c)可以把空指针转换成目标类型的空指针(nullpointer)。   d)把任何类型的表达

4、式转换成void类型。   注意:static_cast不能转换掉expression的const、volitale或者__unaligned属性。2)dynamic_cast   用法:dynamic_cast(expression)   说明:该运算符把expression转换成typeid类型的对象。typeid必须是类的指针、类的引用或者void*。如果typeid是类的指针类型,       那么expression也必须是指针,如果typeid是一个引用,那么expression也必须是一个引用。一般情况下,dynami

5、c_cast用       于具有多态性的类(即有虚函数的类)的类型转换。              dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的source对象是否真的可以转换成target类型,       这种检查不是语法上的,而是真实情况的检查。先看RTTI相关部分,通常,许多编译器都是通过vtable找到对象的RTTI信息      的,这也就意味着,如果基类没有虚方法,也就无法判断一个基类指针变量所指对象的真实类型,这时候,dynamic_cast只能      用来做安全的转换,例如

6、从派生类指针转换成基类指针。而这种转换其实并不需要dynamic_cast参与。也就是说,dynamic_cast      是根据RTTI记载的信息来判断类型转换是否合法的。  用途:主要用于类层次之间的up-casting和down-casting,还可以用于类之间的交叉转换。在进行down-casting时,dynamic_cast       具有类型检查的功能,比static_cast更安全。检测在运行时进行。如果被转换的指针不是一个被请求的有效完整的对象指针,       返回值为NULL。当用于多态类型时,它允许任意的隐式类型转换以及

7、相反过程。不过,与static_cast不同,在后一种情况里       (注:即隐式转换的相反过程),dynamic_cast会检查操作是否有效。也就是说,它会检查转换是否会返回一个被请求的有       效的完整对象。   注意:dynamic_cast不能转换掉expression的const、volitale或者__unaligned属性。3)  reinterpret_cast    用法:reinterpret_cast(expression)    说明:转换一个指针为其他类型的指针,也允许将一个指针转换为整数类型,反

8、之亦然。这个操作符能够在非相关的类型之间进行       转换。操作结果只是简单的从一个指针到别的指针的值的二进制拷贝,在

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

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

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