首页 > 试题广场 >

C++中,以下哪个关键字用于在运行时检查类型信息?

[单选题]
C++中,以下哪个关键字用于在运行时检查类型信息?
  • dynamic_cast
  • static_cast
  • const_cast
  • reinterpret_cast

C++ 提供了四种主要的类型转换运算符,它们分别是static_cast、dynamic_cast、const_cast和reinterpret_cast。

  1. static_cast

    • 用于执行编译时已知的非多态类型转换(也称为静态类型转换)。
    • 常用于基本数据类型之间的转换,如将 float 转换为 int。
    • 也用于类层次结构中的向上转型(从派生类指针转换为基类指针)。
    • 不能用于多态类型转换,即不能安全地将基类指针转换为派生类指针,因为这种转换需要在运行时确定,应使用 dynamic_cast。
  2. dynamic_cast

    • 用于执行运行时多态类型转换(也称为动态类型转换)。
    • 只能应用于含有虚函数的类
    • 用于类层次结构中的向下转型(从基类指针转换为派生类指针)以及类型安全的向下转型。
    • dynamic_cast 返回的指针或引用在无法进行安全转换时为 nullptr。
  3. const_cast

    • 用于移除或添加 const 或 volatile 或两者的限定符
    • 这种转换不改变表达式的值类型。
    • 通常用于那些需要修改 const 或 volatile 对象的场合,或者用于通过接口传递 const 参数,而接口又需要修改该参数。
  4. reinterpret_cast

    • 用于执行无关系的指针转换,比如将任何指针转换为任何其他指针类型
    • 也可以用来转换任何整数到任何指针类型,以及反过来。
    • 这种转换是危险的,因为它允许几乎任意的指针转换,可能会导致未定义行为。
编辑于 2024-04-19 13:22:00 回复(0)