static_cast用于编译时类型转换,支持基本类型转换、继承体系指针转换、void*转换及自定义类型转换,语法为static_cast<目标类型>(表达式),不进行运行时检查,向下转换需谨慎,不可去除const属性。

static_cast 是 C++ 中最常用的类型转换操作符之一,它在编译时进行类型转换,适用于有明确定义的类型之间转换。与 C 风格的强制转换相比,static_cast 更安全、更清晰,能帮助编译器检查部分非法转换。
static_cast<目标类型>(表达式)
1. 基本数据类型之间的转换
用于数值类型之间的转换,如 int 转 double,float 转 int 等。示例:
立即学习“C++免费学习笔记(深入)”;
double result = static_cast<double>(5) / 2; // 结果为 2.5,不是 2 int i = static_cast<int>(3.14); // i 的值为 3
2. 指针类型的向上和向下转换(在继承体系中)
在类的继承关系中,static_cast 可以用于:示例:
立即学习“C++免费学习笔记(深入)”;
class Base {};
class Derived : public Base {};
<p>Derived d;
Base<em> b = &d; // 向上转换,天然支持
Derived</em> dp = static_cast<Derived*>(b); // 向下转换,需显式转换
3. void* 与其他指针类型之间的转换
C++ 不允许直接将 void* 赋值给其他指针类型,必须使用 static_cast 显式转换。示例:
立即学习“C++免费学习笔记(深入)”;
int value = 42; void* ptr = &value; int* ip = static_cast<int*>(ptr); // 将 void* 转回 int*
4. 自定义类型转换
如果类定义了构造函数或类型转换运算符,static_cast 可触发这些转换。示例:
立即学习“C++免费学习笔记(深入)”;
class A {
public:
A(int x) { /* 构造 */ }
};
<p>class B {
public:
operator int() const { return 100; }
};</p><p>A a = static_cast<A>(42); // 调用 A(int)
B b;
int n = static_cast<int>(b); // 调用 operator int()
基本上就这些。合理使用 static_cast 能提升代码可读性和安全性,但要避免滥用,特别是在继承体系中做向下转换时要格外小心。
以上就是c++++怎么使用static_cast进行类型转换_static_cast类型转换用法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号