关于C++ 的类型转换失败
C++中的基础(内置)数据类型的转型没有失败的,顶多就是精度损失;至于自定义类型的转型,最好使用新式的转型风格,即
const_cast<T>(expression) //const与非const之间的转型
dynamic_cast<T>(expression) //多态转换
reinterpret_cast<T>(expression) //强制转换
static_cast<T>(expression) //隐式转换
最好不要用旧风格的(T)(expression)
要说明的是:
一、之所以新风格写的转型如此麻烦,就是让人尽量少做转型操作;
二、多态转型的时候,有时提示失败,比如一个子类对象指针转换为父类对象指针(这个是多态的基础,肯定是可以的)提示失败,其实有可能是子对象的定义缺失,注意此时报错报的是转型失败;
浙公网安备 33010602011771号