C++支持C风格的强制转换,C风格的类型转换运算符太过松散,可能会带来一些隐患,让一些问题难以察觉。
TypeName b = (TypeName)a;
C++提供了一组可以用在不同场合的强制类型转换的函数。
- dynamic_cast
- const_cast
- static_cast
- reinterpret_cast
可以根据目的选择一个适合的运算符,而不是使用通用的类型转换。这指出了类型转换的原因,并让编译器能够检查程序的行为是否与设计者的想法吻合。
dynamic_cast运算符
除了dynamic_cast以外的转换,其转换行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转换的对象。
而dynamic_