绝代码农 发表于 2021-7-6 09:49:10

C++强制类型转换

  
  强制类型转换

[*]命名强制类型转换 cast-name(expression)
[*]

[*]static_cast
[*]const_cast
[*]reinterpret_cast
[*]dynamic_cas



  命名强制类型转换 cast-name(expression)
static_cast
  只要不包含底层const,都可以使用。适合将较大算术类型转换成较小算术类型

const_cast
  ​只能改变底层const,例如指向const的指针(指向的对象不一定是常量,但是无法通过指针修改)​,如果指向的对象是常量,则这种转换在修改对象时,结果未定义。

reinterpret_cast
  通常为算术对象的位模式提供较低层次上的重新解释。如将int转换成char。很危险!

dynamic_cas
  一种动态类型识别。转换的目标类型,即type,是指针或者左右值引用,主要用于基类指针转换成派生类类型的指针(或引用),通常需要知道转换源和转换目标的类型。如果​​转换失败,返回0(转换目标类型为指针类型时)或抛出bad_cast异常(转换目标类型为引用类型时)
  

  
页: [1]
查看完整版本: C++强制类型转换