在C语言中有隐式类型转换和显示的强制类型转换。
隐式类型转换:相近类似,表示的类型意义类似;比如int和double和float。
显示强制转换:不相似类型,表示的意义不同;比如内置类型和自定义类型
缺陷:转换的可视性较差,所有的转换形式都是以一种相同的形式书写,难以跟踪错误的转换
C++的四种类型转换
为了加强类型转换的可视性,C++引入四种命名的强制类型转换操作符
static_cast:用于相关类型
reinterpret_cast:用于不相关类型
const_cast:用于转换时去掉const属性
dynamic_cast:
用于将一个父类对象的指针
/
引用转换为子类对象的指针或引用
(
动态转换
)
向上转型:子类对象指针
/
引用
->
父类指针
/
引用
(
不需要转换,赋值兼容规则
)
向下转型:父类对象指针
/
引用
-
>
子类指针
/
引用
(
用
dynamic_cast
转型是安全的
)
注意:
1. dynamic_cast
只能用于含有虚函数的类
2. dynamic_cast
会先检查是否能转换成功,能成功则转
换,不能则返回
0
239

被折叠的 条评论
为什么被折叠?



