【语言学习】C++显示转换
强制类型转换(cast)形式:cast-name<type> (expression);
cast-name可取static_cast、dynamic_cast、const_cast和reinterpret_cast。
1、static_cast:任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_cast。编译时进行类型检查。比如:
(1)基本数据类型之间的转换
(2)空指针转换成目标类型
(3)任何类型转换成void类型
(4)用于类层次结构中父类和子类之间指针和引用的转换:子类到父类(上行转换)是安全的,父类到子类(下行转换)是不安全的。
2、dynamic_cast:主要用于类层次结构中父类和子类之间指针和引用的转换,且常用于上行转换。具有运行时类型检查机制。
常见形式:dynamic_cast<type*>(e)、dynamic_cast<type&>(e)、dynamic_cast<type&&>(e)
3、const_cast:只能改变(添加或删除const性质)运算对象的底层const。
4、reinterpret_cast:可用于位的低级别简单重新解释