C/C++中的类型转换

Posted on 2018-10-15 18:56  yacbo  阅读(151)  评论(0编辑  收藏  举报

C风格的强制类型转换,不管什么类型的转换统统是: TYPE b = (TYPE)a;

C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。

static_cast 静态类型转换,如int转换char

reinterpreter_cast 重新解释类型

dynamic_cast 命名上理解是动态类型转换,如子类和父类的多态类型转换

const_cast 字面理解就是去const属性

double dpi = 3.1415926;
int num1 = (int)dpi;  //C类型转换
int num2 = static_cast<int>(dpi);  //静态类型转换
char *p1 ="hello...";
int *p2 = NULL;
p2 = reinterpreter_cast<int*>(p1);

通过reinterpreter_cast<>() 和 static_cast<>()把C语言的强制类型转换都覆盖了。

 

Dog *pDog = dynamic_cast<Dog *>(base);  //父类对象转成子类对象
                        //向下转型

 

Copyright © 2024 yacbo
Powered by .NET 8.0 on Kubernetes