在C++中,可以使用类型转换运算符或者C++标准库中的static_cast
、dynamic_cast
、const_cast
和reinterpret_cast
进行类型转换。以下是各种类型转换的示例:
int intValue = 42;
double doubleValue = static_cast<double>(intValue); // 将整数值转换为浮点值
static_cast
:int intValue = 42;
double doubleValue = static_cast<double>(intValue); // 将整数值转换为浮点值
class Base {};
class Derived : public Base {};
Derived* derivedPtr = new Derived();
Base* basePtr = static_cast<Base*>(derivedPtr); // 将派生类指针转换为基类指针
dynamic_cast
:class Base {
public:
virtual ~Base() {}
};
class Derived : public Base {};
Base* basePtr = new Derived();
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr); // 将基类指针转换为派生类指针,如果转换失败,返回空指针
const_cast
:const int constIntValue = 42;
int intValue = const_cast<int>(constIntValue); // 将常量整数值转换为非常量整数值
const double* doublePtr = &constDoubleValue;
double* nonConstPtr = const_cast<double*>(doublePtr); // 将指向常量的指针转换为指向非常量的指针,注意这样做可能导致未定义行为
reinterpret_cast
:int intValue = 42;
int* intPtr = &intValue;
char* charPtr = reinterpret_cast<char*>(intPtr); // 将整数指针转换为字符指针
float floatValue = 3.14f;
int* intPtr2 = reinterpret_cast<int*>(&floatValue); // 将浮点数指针转换为整数指针
请注意,在使用类型转换时要小心,确保转换是安全的,否则可能导致未定义行为。