c++ static_cast显式类型转换

static_cast<> 在 C++ 中是一种用于执行显式类型转换的运算符,它在编译时检查类型转换的有效性,比 C 风格的强制转换(如 (int)x)提供了更强的类型检查。

基本类型之间的转换

用于基本数据类型(如 int、float、double 等)之间的转换,使得不同类型的数据可以进行操作。

1
2
int i = 10;
float f = static_cast<float>(i);

 

类型向上和向下转换

在类的继承体系中,static_cast<> 可以用于基类和派生类之间的转换。

  • 向上转换(Upcasting):将派生类的指针或引用安全地转换为基类的指针或引用。这种转换是安全的,因为派生类总是包含基类的部分。
1
2
3
4
class Base {};
class Derived : public Base {};
Derived d;
Base* b = static_cast<Base*>(&d);
  • 向下转换(Downcasting):将基类的指针或引用转换为派生类的指针或引用。虽然 static_cast<> 支持这种转换,但它不执行运行时类型检查(RTTI),因此在执行向下转换时应谨慎,确保转换是安全的。
1
2
Base b;
Derived* d = static_cast<Derived*>(&b); // 危险!

 

posted @   Yohoc  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2023-04-05 sizeof 和 strlen 的区别
点击右上角即可分享
微信分享提示