跳到主要内容

简述C++类型转换有四种 ?

参考答案:

C++ 中的类型转换主要有四种,它们分别是:

  1. 静态类型转换(Static Cast):这是最常用的类型转换方式。它主要用于基础数据类型之间的转换,如 int 到 double,或者用于类之间的转换,如子类对象到父类对象的转换。静态类型转换在编译时进行,因此如果转换不合法,编译器会报错。

例如:

double d = 3.14;
int i = static_cast<int>(d);  // 将 double 类型转换为 int 类型
  1. 动态类型转换(Dynamic Cast):这种类型转换主要用于类之间的转换,特别是当涉及到继承和多态时。它主要用于将子类指针或引用转换为父类指针或引用,或者反过来。如果转换不合法(例如,试图将非派生类对象转换为派生类对象),动态类型转换将在运行时报错。

例如:

class Base {};
class Derived : public Base {};

Derived* d = new Derived();
Base* b = dynamic_cast<Base*>(d);  // 将 Derived 类型转换为 Base 类型
  1. 常量类型转换(Const Cast):这种类型转换用于修改类型的 const 或 volatile 属性。它允许我们去掉一个类型的 const 或 volatile 属性,或者添加一个。

例如:

const int a = 10;
int* p = const_cast<int*>(&a);  // 去掉 const 属性
  1. 重解释类型转换(Reinterpret Cast):这种类型转换提供了最底层的位操作,它可以将任意类型的指针转换为任意其他类型的指针。这种转换非常危险,因为它只是简单地重新解释位模式,而不会对数据进行任何转换或检查。因此,除非你知道你在做什么,否则应避免使用这种转换。

例如:

int a = 10;
int* p = &a;
char* q = reinterpret_cast<char*>(p);  // 将 int* 转换为 char*

这四种类型转换各有其特点和适用场景,需要根据具体情况选择合适的类型转换方式。