旧式的C转型的缺点:
- 意图不明确。几乎允许将任何类型转换为任何其他类型,例如,改变对象的常量性或者对象的类型。
- 难以辨识。语法结构由一对小括号+标识符组成,这种形式在C++的任何地方都可能被使用,也就是说,无法判断是否程序中有转型操作。
C++的转型操作符
- static_cast:基本拥有与C旧式转型相同的作用。static_cast<type>(expression)
- const_cast:去掉常量属性
- dynamic_cast:将基类对象的指针指向不同的派生类,如果转型失败,会以一个null指针(指针)或exception(reference)表现出来;第二个用途是找出被某对象占用的内存的起点(不懂,记一下)。
- reinterpret_cast:转换函数指针类型。例如将void转换为char。它存在潜在的危险,结果几乎总是和编译平台息息相关,除非走投无路,否则不要使用。
网友评论