15-5类型转换运算符

类型转换运算符

为了阻止C语言无意义的类型转换,C++制订了更严格的转换方式。

并添加了四种类型转换符

dynamic_cast;
const_cast;
static_cast;
reinterpret_cast;

15.5.1dynamic_cast

检测类型转换是否可行(派生类与基类)

dynamic_cast<type-name>(expression)

15.5.2const_cast

改变值为const类型或volatile类型

用途:一个值在大多数情况下是常量,但某些情况下需要被修改。

const_cast<type-name>(expression)
//表达式与type-name之间除了const或volatile属性可以不同之外,其余如果不同则会出错

案例

High bar;
const High* pbar = &bar;
High* pb = const_cast<High *>(pbar); //有效,因为pbar与High*类型一致,表达式转换为非const
const Low* pl = const_cast<const Low*>(pbar); //无效,因为pbar与Low*类型不一致

15.5.3static_cast

将允许隐式转换的表达式转换为对应的类型

static_cast<type-name>(expression)

15.5.4reinterpret_cast

用于危险的类型转换

reinterpret_cast<type-name>(expression)