C++类型转换: static_cast const_cast reinterpret_cast dynamic_cast
来源:互联网 发布:手机看电视直播的软件 编辑:程序博客网 时间:2024/05/01 19:29
* C++提供了四种新的类型强制: static_cast const_cast reinterpret_cast dynamic_cast 1)staic_cast静态强制; 不能在无关的指针之间进行static类型强制 class CAnimal { //... public: CAnimal(){} }; class CGiraffe:public CAnimal { //... public: CGiraffe(){} }; int main(void) { CAnimal an; CGiraffe jean; an = static_cast<CAnimal>(jean);//将对象jean强制成CAnimal类型 return 0; } 2、const_cast类型强制 const_cast类型强制将一个const变量变成一个非const的等价形式 int main() { const int j = 99; int * k; k = const_cast<int *>(&j);//解除const return 0; } 3、reinterpret_cast运算符 reinterpret_cast运算符用来将一个类型指针转变为另一种类型的指针,也用在将整开型量转为指针,或将指针转为整型量上; int main() { int j = 10; int * ptr = &j; char * cptr; cptr = reinterpret_cast<char *>(ptr);//将int指针类型转变为char的指针类型 return 0; } 4、dynamic_cast运算符 dynamic_cast的主要目的是: 1)它返回派生类对象的地址; 2)它测试基类指针是否指向下一尖括号<>中所指定类型的对象 dynamic_cast是一个运行时类型信息,dynamic_cast运算符将指向派生对象的基类部分的基类指针转变为指向派生对象的派生类指针,dynamic_cast必须严格地指定与派生对象相同的类,或者它返回NULL指针; class CAnimal { //... }; class CGiraffe:public CAnimal { //... }; class CGoat:public CAnimal { //... }; int main() { CGiraffe gene; CAnimal * aptr = &gene; CGiraffe * ptr1,* ptr2; ptr1 = dynamic_cast<CGiraffe *>(aptr); ptr2 = dynamic_cast<CGoat *>(aptr); //return NULL return 0; }
0 0
- 【C++】强制类型转换(static_cast,reinterpret_cast,const_cast,dynamic_cast,explicit)
- [C++] 强制类型转换static_cast、dynamic_cast、reinterpret_cast和const_cast
- c++dynamic_cast、const_cast 、static_cast、reinterpret_cast强制类型转换
- static_cast dynamic_cast const_cast reinterpret_cast 类型转换
- C++ - 类型转换 static_cast, dynamic_cast, reinterpret_cast, const_cast
- 类型转换static_cast dynamic_cast const_cast reinterpret_cast
- static_cast, const_cast, dynamic_cast, 和reinterpret_cast 类型转换
- static_cast、dynamic_cast、reinterpret_cast和const_cast 类型转换
- C++类型转换 static_cast, dynamic_cast, reinterpret_cast, const_cast
- C++类型转换:static_cast、const_cast、dynamic_cast、reinterpret_cast
- C++类型转换 static_cast、dynamic_cast、const_cast、reinterpret_cast
- C++类型转换: static_cast const_cast reinterpret_cast dynamic_cast
- 类型转换-static_cast、dynamic_cast、reinterpret_cast、const_cast探讨
- reinterpret_cast,static_cast,dynamic_cast,const_cast类型转换
- xxx_cast类型转换static_cast/const_cast/reinterpret_cast/dynamic_cast
- 强制类型转换 static_cast、dynamic_cast、reinterpret_cast、和const_cast
- c++ 强制转换类型运算符 const_cast reinterpret_cast static_cast dynamic_cast
- 标准C++的类型转换:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- NGUI项目中方法总结
- 经验总结44-java和c#的一些联想
- Linux禁用IPv6
- Intel Media SDK相关知识文章总汇
- SignalR 学习 - 入门
- C++类型转换: static_cast const_cast reinterpret_cast dynamic_cast
- 图像滤镜艺术--大雾效果滤镜
- Functional Reactive Programming on Android With RxJava
- 前端周刊20150124期
- NDK开发(六):Android如何调用第三方SO库
- iOS XMPP Framework 04 - 添加XMPP Framework
- spring quartz定时任务时间设置
- STM32杂叙
- [Telerik]RadDocking第05篇 在同一个RadSplitContainer中定义多个面板分组