C++学习 十九、类型转换符
前言
- 前言
- static_cast
- dynamic_cast
- const_cast
- reinterpret_cast
本篇学习C++中的四个类型转换符号,static_cast,dynamic_cast,const_cast,reinterpret_cast。
C++使用以上这四种转换代替C风格的强制类型转换。
static_caststatic_cast
用于低风险的转换,例如:
- 自动类型转换,如int转double
- 向上转换,如派生类指针转基类指针
- 向下转换,如基类指针转派生类指针(但不安全)
- 定义了转换构造函数和转换函数的类与类型转换
- void指针与其它指针转换
使用方法是static_cast (expression)
:
Base* pb;
Derived* pd;
pd = static_cast(pb);
而不同内置类型指针转换、整型转指针等高风险转换不能使用static_cast。
static_cast
在编译时进行检查,转换失败时报错。
dynamic_cast
用于继承类之间的转换:
- 向上转换
- 向下转换
dynamic_cast
由于向上转换是安全的,不会在运行期间检查。而向下转型不安全,因此将在运行期间检查安全性:
Base* pb;
Derived* pd;
pd = dynamic_cast(pb);
对于向上转换,dynamic_cast
和static_cast
是类似的,对于向下转换,dynamic_cast
更安全。
dynamic_cast
是运行效率较低的转换。
注意:向下转换要求基类必须有虚函数。
const_castconst_cast
用于去除表达式的const/volatile:
const int a = 6;
int* pa = const_cast(&a);
*pa = 5;
std::cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?