C 型转换

C 风格的投射可以被认为是尽力而为的投射并且被命名为因为它是唯一可以在 C 中使用的投射。该投射的语法是 (NewType)variable

每当使用此强制转换时,它将使用以下 c ++强制转换之一(按顺序):

  • const_cast<NewType>(variable)
  • static_cast<NewType>(variable)
  • const_cast<NewType>(static_cast<const NewType>(variable))
  • reinterpret_cast<const NewType>(variable)
  • const_cast<NewType>(reinterpret_cast<const NewType>(variable))

函数式转换非常相似,但由于其语法的结果有一些限制:NewType(expression)。因此,只能转换为没有空格的类型。

最好使用新的 c ++强制转换,因为它更易读,可以在 C++源代码中的任何地方轻松发现,并且在编译时会检测到错误,而不是在运行时。

由于此类型转换可能导致意外情况,因此通常被认为是危险的。