C++的类型转换介绍_第1页
C++的类型转换介绍_第2页
C++的类型转换介绍_第3页
C++的类型转换介绍_第4页
C++的类型转换介绍_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第页共页C++的类型转换介绍C++的类型转换介绍1、类型转换名称和语法C风格的强迫类型转换(TypeCast)很简单,不管什么类型的转换统统是:TYPEb=(TYPE)aC++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。static_cast静态类型转换。如int转换成charreinterpreter_cast重新解释类型dynamic_cast命名上理解是动态类型转换。如子类和父类之间的多态类型转换。const_cast字面上理解就是去const属性。4种类型转换的格式:TYPEB=static_cast<TYPE》(a)2、类型转换一般性介绍4中类型转化介绍1〕static_cast<》静态类型转换,编译的时c++编译器会做类型检查;根本类型能转换但是不能转换指针类型2〕假设不同类型之间,进展强迫类型转换,用reinterpret_cast<》进展重新解释3〕dynamic_cast<》,动态类型转换,平安的基类和子类之间转换;运行时类型检查〔C++特有的〕4〕const_cast<》,去除变量的只读属性〔C++特有的〕,变量的类型必须是指针,指针指向的内存空间可被修改一般性结论C语言中能隐式类型转换的,在c++中可用static_cast<》进展类型转换。因C++编译器在编译检查一般都能通过;C语言中不能隐式类型转换的,在c++中可以用reinterpret_cast<》进展强行类型解释。static_cast<》和reinterpret_cast<》根本上把C语言中的.强迫类型转换给覆盖reinterpret_cast<》很难保证移植性。3、典型案例代码中包含了4中类型转化的实例,以及注意点。#include<iostream》usingnamespacestd;classAnimal{public:virtualvoidaction{}};classDog:publicAnimal{public:virtualvoidaction{}voiddoSwim{}};classCat:publicAnimal{public:virtualvoidaction{}voiddoTree{}};classDesk{public:voidaction{}};voidObjPlay(Animal*animl){animl-》action;Dog*dog=dynamic_cast<Dog*》(animl);if(dog!=NULL)//判断是不是dog{dog-》action;dog-》doSwim;}Cat*cat=dynamic_cast<Cat*》(animl);if(cat!=NULL)//判断是不是cat{cat-》action;cat-》doTree;}cout<<“funcObjPlayisexit!!!}//典型用法把形参的只读属性去掉voidOpbuf(constchar*p){//char*p2=p;err:constchar*不能初始化为char*//p[0]='b';err:必须是可修改的左值char*p2=const_cast<char*》(p);//去除只读的属相p2[0]='b';}intmain{//静态类型转化static_cast<》doubled=3.14159;inti1,i2;i1=d;//C中的隐式类型转化i2=static_cast<int》(d);//C++中的静态类型转化//重新解释类型reinterpret_cast<》char*p=“abcd”;int*p1=NULL;int*p2=NULL;p1=(int*)p;//C中强迫类型转化//p2=static_cast<int*》(p);编译报错,类型转化错误,静态类型不能转化指针p2=reinterpret_cast<int*》(p);//C++中的重新解释类型//动态类型转换dynamic_cast<》Animalan;Animal*pAn=-an;ObjPlay(pAn);Dogdog;Dog*pDog=-dog;ObjPlay(pDog);Catcat;Cat*pCat=-cat;ObjPlay(pCat);Deskdesk;Desk*pDesk=-desk;//Animal*pAn=dynamic_cast<Animal*》(pDesk);不同的基类指针之间不能互相转化,平安//去除变量的只读属性,const_cast<》,此类型必须是指针charbuf[100]=“aaaaaaaaaaaa”;//

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论