📜  强制转换 cpp - C++ (1)

📅  最后修改于: 2023-12-03 15:39:32.494000             🧑  作者: Mango

强制转换 C++ - CPP

在C++中,强制转换是一种将一种数据类型转换为另一种数据类型的方法。它是通过使用特殊的转换运算符和语法来实现的。

C++ 支持以下四种类型的强制转换:

  1. const_cast - 用于删除const属性。
  2. static_cast - 将一个数据类型转换成另一个数据类型。
  3. dynamic_cast - 用于安全地将指向基类的指针转换为指向派生类的指针。
  4. reinterpret_cast - 用于类型转换的指针或引用,用于将一个数据类型转换为另一个不同的数据类型。
const_cast

const_cast运算符用于删除const属性。它可以将const类型转换为非const类型。请注意,不应该在原始类型上使用const_cast。

const int x = 10;
int y = const_cast<int&>(x);
static_cast

static_cast运算符用于将一种数据类型转换为另一种数据类型。例如,将一个整数转换为浮点数。

int x = 5;
float y = static_cast<float>(x);
dynamic_cast

dynamic_cast运算符用于安全地将指向基类的指针转换为指向派生类的指针。它会检查是否可以进行转换。如果不能进行转换,则返回NULL指针。

class Base {
public:
    virtual void print() {}
};
class Derived: public Base {};

Base* b = new Derived;
Derived* d = dynamic_cast<Derived*>(b);
reinterpret_cast

reinterpret_cast运算符用于类型转换的指针或引用,用于将一个数据类型转换为另一个不同的数据类型。它不会检查是否可以进行转换。

int x = 10;
char* ptr = reinterpret_cast<char*>(&x);