c++ static_cast用法
static_cast 是 C++ 中的一种类型转换操作符,用于执行基础数据类型之间的转换(如 int 到 double)、类指针与父/子类之间的转换、空指针与任何指针类型之间的转换以及类的静态成员函数调用。
以下是 static_cast 的基本用法:
1.基础数据类型之间的转换
cpp复制代码
double d = static_cast<double>(20); // 将整数20转换为浮点数
int i = static_cast<int>(d); // 将浮点数d转换为整数
2.类指针与父/子类之间的转换
cpp复制代码
Base* base = new Derived(); // Derived 是 Base 的子类
Derived* derived = static_cast<Derived*>(base); // 将 Base* 转换为 Derived*
3.空指针与任何指针类型的转换
cpp复制代码
int* p = nullptr;
int* p2 = static_cast<int*>(p); // 将空指针 p 转换为 int* 类型
4.类的静态成员函数调用
cpp复制代码
指针调用成员函数
class MyClass {
public:
static void myStaticFunction() {
std::cout << "This is a static function." << std::endl;
}
};
int main() {
MyClass::myStaticFunction(); // 正确,直接调用静态成员函数
static_cast<MyClass*>(nullptr)->myStaticFunction(); // 错误,不能通过空指针调用静态成员函数
}
注意:static_cast 不能用于执行动态转换,例如将父类指针转换为子类指针。对于这种情况,应使用 dynamic_cast