手机
当前位置:查字典教程网 >编程开发 >C语言 >static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解
static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解
摘要:1.static_cast对类的指针只能转换有继承关系的类。对普通的指针来说只能在void*和其他指针之间转换。它还可转换简单的类型,比如i...

1.static_cast对类的指针只能转换有继承关系的类。对普通的指针来说只能在void*和其他指针之间转换。它还可转换简单的类型,比如int到char等。不能提供数字到指针的转换。不能提供不同类型指针之间的转换比如int*到char*。

2.dynamic_cast提供安全的转换如果两个指针不存在继承关系转换会失败返回空指针,如果你提供一个错误的指针那样会发生内存访问异常,因为它会去比较两个类型的虚函数表。虚函数表的指针一般放在对象指针最开始的四字节中,你去访问一个错误的地址这样肯定会发生异常。

3.reinterpret_cast提供数字到指针间的转换比如void*到int。提供不同类型指针的强制转换比如int*到char*。不提供int到char的转换。但是处理类指针转换的时候不能用它,它不会自动的调整指针。

4.const_cast把一个const指针转为非const,最好不要用这个转换。

【static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解】相关文章:

CStdioFile的用法详细解析

在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈

c++中const的使用详解

snprintf函数的用法解析

c语言中static和extern的用法详细解析

C++中delete和delete[]的区别详细介绍

iostream与iostream.h的区别详细解析

c字符串,string对象,字符串字面值的区别详解

static_cast,dynamic_cast,reinterpret_cast和const_cast的区别详解

C字符串与C++中string的区别详解

精品推荐
分类导航