1、类型转换
创新互联建站网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了做网站、网站建设,成都网站设计,一元广告,成都做网站选创新互联建站,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。
static_cast<>():静态类型转换,编译时C++编译器会做类型检查,在C语言中,隐式类型转换的地方,均可以使用static_cast<>()进行类型转换;
reinterpret_cast<>():强制类型转换;编译器重新解释;
dynamic_cast
const_cast<>():const char *---> char *,把常量属性去掉;
(1)、代码如下:
#includeusing namespace std; class Animal{ public: virtual void cry() = 0; }; class Dog : public Animal{ public: virtual void cry(){ cout<<"汪王"< cry(); //1、有继承 2、有虚函数的重写 3、有父类指针指向子类对象; ===>发生多态 //dynamic_cast能识别子类对象,运行时类型识别; Dog *pDog = dynamic_cast (base); //是自己类型的,将转换成功,否则返回为NULL; if(pDog){ pDog->doHome(); //让狗做自己特有的工作; } Cat *pCat = dynamic_cast (base);//父类对象===>子类对象,向下转型; if(pCat){ pCat->doThing(); //让猫做自己特有的工作; } } int main(void){ Dog d1; Cat c1; playObj(&d1); playObj(&c1); //Animal *base = NULL; //base = static_cast (&d1); return 0; } /* int main(void){ double pi = 3.14; int num2 = static_cast (pi); //静态类型转换,编译时C++编译器会做类型检查,在C语言中,隐式类型转换 的地方,均可以使用static_cast<>()进行类型转换; char *p1 = "abcdef"; int *p2 = NULL; //p2 = static_cast (p1); //使用static_cast,编译器编译时,会做类型检查,若有错误,提示错误; p2 = reinterpret_cast (p1);// 强制类型转换;编译器重新解释 cout< 运行结果:
(2)、针对const_cast
(p)的类型转换代码: #includeusing namespace std; void printBuf(const char *p){ //p[1] = '1'; char *p1 = NULL; p1 = const_cast (p);//const char *---> char *,把常量属性去掉; p1[0] = 'Z'; cout< 运行结果:
分享名称:C++中四种类型装换
分享地址:http://bzwzjz.com/article/jhhcpp.html