C++类型转换符 static_cast, dynamic_cast, const_cast

“cast”一词在英文里有“浇铸”的意思,还是挺形象的。

1.static_cast

可以看做是利用一个原始值构建一个临时对象,并再设定初始值的时候使用类型转换。

例如:

2.dynamic_cast

将多态类型(polymorphic type)成员向下转换为其对应的静态类型成员。这个cast是在运行时实时检验的,因此可以用来检测某个指针指向的对象到底是不是XXX类的。

当参数是个引用,并且类别转换失败的时候,会抛出bad_cast异常哦。

3.const_cast

去除某个对象的const修饰作用,也可以拿来去除volatile修饰作用。