C++类型转换运算符dynamic_cast、static_cast 和 reinterpret_cast

目录

区别对比

dynamic_cast:

static_cast:

reinterpret_cast:

案例说明

dynamic_cast

static_cast

reinterpret_cast


C++ 中有三种主要的类型转换运算符:dynamic_caststatic_castreinterpret_cast。这些转换运算符可以用来在不同的上下文中进行类型转换,但它们的行为和使用场景是不同的。

区别对比

dynamic_cast

  • 用于在运行时检查继承关系
  • 只能用于具有多态性质的类,即必须有虚函数
  • 用于从一个基类指针或引用转换为派生类指针或引用
  • 会在运行时进行类型检查,如果无法完成类型转换,会返回 null 指针或抛出 std::bad_cast 异常

static_cast

  • 用于常见的隐式类型转换或明显的类型转换
  • 可以执行基本类型之间的转换,也可以执行非常量之间的转换
  • 可以执行多态类之间的指针和引用转换,但不会进行运行时类型检查
  • 可以执行 const 的添加或删除,以及 volatile 的添加或删除

你可能感兴趣的:(深入C++编程入门,c++,开发语言,dynamic_cast,static_cast)