【语言学习】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:可用于位的低级别简单重新解释

posted @ 2018-03-23 20:44  stay_heart  阅读(121)  评论(0编辑  收藏  举报