强制转换

强制转换

在 C++ 中,强制类型转换(或类型转换)是一种将变量从一种类型转换为另一种类型的方法。C++ 提供 了四种强制转换运算符,每种都有其特定的用途和适用场景:

  1. static_cast static_cast

    • static_cast static_cast是最常用的类型转换运算符,用于无风险的转换,如整数到浮点数,字符到整 数等。
    • 它在编译时执行,不执行运行时类型检查(RTTI)。
    • 示例: int x = static_cast(y); 其中 y 可能是 float 类型。
  2. dynamic_cast

    • 专门用于处理对象的多态性,只能用于指针和引用,且涉及对象类必须有虚函数。
    • 它在运行时检查类型的安全性,如果转换失败,对于指针类型返回 nullptr,对于引用类型 抛出异常。
    • 示例: Derived *dp = dynamic_cast(bp); 其中 bp 是基类指针, Derived 是派生类。
  3. const_cast

    • 用于修改类型的 const 或 volatile 属性。
    • 通常用于去除对象的 const 性质,允许修改原本被声明为 const 的变量。
    • 示例: const int a = 10; int* b = const_cast(&a);
  4. reinterpret_cast

    • 用于进行低级别的重新解释转换,几乎无限制,但也是最危险的。
    • 它可以将一种完全不相关的类型转换为另一种类型,比如将指针类型转换为整数类型。
    • 示例: long p = reinterpret_cast(&object); 其中 object 是某个类的对象。