C++强制转换总结
-
c语言的强制类型转换,主要用于基础数据之间的转换
语法规则:
(type-id)expression //转换格式1
type-id(expression) //转换格式2 -
c++除了c语言的强制类型转换外,新增了四种强制类型转换:
static_cast 、dynamic_cast、const_cast、reinterpret_cast
语法为:
static_cast<new_type> (expression)
dynamic_cast <new_type> (expression)
const_cast <new_type> (expression)
reinterpret_cast <new_type> (expression)
备注:new_type为目标数据类型,expression为原始数据类型变量或表达式
2.1 static_cast 主要有如下几种用法
a. 用于类层次结构中基类和派生类之间指针和引用的转换。
进行上行转换(把派生类的指针或引用转换成基类表示)是安全的
进行下行转换(把基类的指针或引用转换成派生类表示)
b. 用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来验证。
c. 把空指针转换成目标类型的空指针
d. 把任何类型的表达式转换成void类型
注意:static_cast不能转换掉expression的const、volatile、或者_unaligned属性