static_cast,dynamic_cast,reinterpret_cast,const_cast区别,及用法总结
2011-07-15 21:27
706 查看
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,最好不要用这个转换。
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
- static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解
- C++四种强制类型转换符功能以及用法总结(dynamic_cast,const_cast,static_cast,reinterpret_cast)
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- static_cast、dynamic_cast、const_cast和reinterpret_cast的区别
- static_cast、dynamic_cast、const_cast和reinterpret_cast总结
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别
- C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
- C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- static_cast,dynamic_cast,reinterpret_cast和const_cast的区别详解
- static_cast,dynamic_cast,const_cast,reinterpret_cast使用总结
- static_cast、dynamic_cast、const_cast和reinterpret_cast总结