一.不同数据类型之间转换函数static_cast介绍
static_cast:这是C++中最常用的类型转换操作符,用于在相关类型之间进行转换,例如非const转换为const,或者父类指针转换为子类指针。
二.static_cast 函数使用示例
(1)基本数据之间转换
#include <iostream>
enum Color {
RED = 1,
GREEN = 2,
BLUE = 3
};
int main() {
int num = 42;
double result = static_cast<double>(num); // 将整数转换为浮点数
int* ptr = nullptr;
void* voidPtr = static_cast<void*>(ptr); // 将指针转换为void指针
Color color = RED;
int colorValue = static_cast<int>(color); //将枚举变量转换为整数
std::cout << "The integer value of the color is: " << colorValue << std::endl;
int cnt = 2;
Color clr = static_cast<Color>(cnt); //整数转换为枚举变量
std::cout << "color: " << clr << std::endl;
return 0;
}
运行结果:
这表明整数成功转换为枚举变量,并且枚举变量的值为2。
(2) 使用static_cast
进行基类指针与子类指针之间相互转换
演示如何将基类指针 转换为 子类指针:
#include <iostream> class Base { public: void print() { std::cout << "Base class" << std::endl; } }; class Derived : public Base { public: void print() { std::cout << "Derived class" << std::endl; } }; int main() { Base baseObj; Derived* derivedPtr = static_cast<Derived*>(&baseObj); // 基类指针转换为子类指针 if (derivedPtr != nullptr) { derivedPtr->print(); // 调用派生类的print函数 } else { std::cout << "Conversion failed" << std::endl; } return 0; }
运行结果:
这表明基类指针成功转换为子类指针,并调用了子类的
演示如何将子类指针 转换为 基类指针:
#include <iostream> class Base { public: void print() { std::cout << "Base class" << std::endl; } }; class Derived : public Base { public: void print() { std::cout << "Derived class" << std::endl; } }; int main() { Derived derivedObj; Base* basePtr = static_cast<Base*>(&derivedObj); // 子类指针转换为基类指针 basePtr->print(); // 调用基类的print函数 return 0; }
运行结果:
这表明子类指针成功转换为基类指针,并调用了基类的