强制类型转换四种函数

187 阅读1分钟

最近在学堂在线上跟着郑老师复习了以前学习的C++知识,遇到一些不会的问题在此记录笔记,欢迎大家一起学习。

static_cast

  • 基本数据类型转换
  • 上行转换,派生类指针(引用)转换为基类指针
  • 空指针转换为目的类型空指针
  • 任意类型的表达式转换为void类型

const_cast

  • 去除指针或者引用的const或volatile限制

reinterpret_cast

  • 从指针类型到一个足够大的整数类型
  • 从整数类型或者枚举类型到指针类型
  • 从一个指向函数的指针到另一个不同类型的指向函数的指针
  • 从一个指向对象的指针到另一个不同类型的指向对象的指针
  • 从一个指向类函数成员的指针到另一个指向不同类型的函数成员的指针
  • 从一个指向类数据成员的指针到另一个指向不同类型的数据成员的指针

dynamic_cast

  • 运行时处理,运行时要进行类型检查
  • 不能用于内置类型转换
  • 成功返回指针或引用,失败返回NULL
  • 基类中一定要含有虚函数
  • 下行转换,基类指针(引用)转换为派生类指针(引用)