当前位置: 首页 > wzjs >正文

做男性服装的网站合肥网站推广电话

做男性服装的网站,合肥网站推广电话,邳州做网站,男女做暖昩视频试看网站C具名转型的功能和用途 1. static_cast功能用途示例 2. dynamic_cast功能用途示例 3. const_cast功能用途示例 4. reinterpret_cast功能用途示例 对比总结最佳实践 在 C 中,具名转型(Named Casts) 是类型安全的显式类型转换操作符&#xff0c…

C++具名转型的功能和用途

    • 1. static_cast
      • 功能
      • 用途
      • 示例
    • 2. dynamic_cast
      • 功能
      • 用途
      • 示例
    • 3. const_cast
      • 功能
      • 用途
      • 示例
    • 4. reinterpret_cast
      • 功能
      • 用途
      • 示例
    • 对比总结
    • 最佳实践

在 C++ 中,具名转型(Named Casts) 是类型安全的显式类型转换操作符,相比传统的 C 风格强制转换,具名转型具有更明确的语义和编译器检查。C++ 提供四种标准具名转型:

1. static_cast

功能

  • 用于编译时已知类型关系的转换
  • 可执行基本类型转换、父子类指针/引用转换(无动态类型检查)
  • 不能移除 const/volatile 限定符

用途

  • 基本数值类型转换
  • 类层次中的向上转换(子类→基类)
  • 隐式转换的显式写法(如 void* → 其他指针)

示例

// 基本类型转换
double d = 3.14;
int i = static_cast<int>(d);  // i = 3// 类层次向上转换
class Base {};
class Derived : public Base {};
Derived* pd = new Derived;
Base* pb = static_cast<Base*>(pd);  // 安全向上转换// void* 转换
int x = 10;
void* pv = static_cast<void*>(&x);
int* pi = static_cast<int*>(pv);

2. dynamic_cast

功能

  • 用于运行时类型检查的类层次转换(需要 RTTI 支持)

  • 主要用于向下转换(基类→子类)

  • 只能用于多态类型(基类必须有虚函数)

用途

  • 安全地将基类指针/引用转换为派生类指针/引用

  • 转换失败时返回 nullptr(指针)或抛出异常(引用)

示例

class Animal { public: virtual ~Animal() {} };
class Dog : public Animal { public: void bark() {} };Animal* pa = new Dog;// 向下转换(安全)
Dog* pd = dynamic_cast<Dog*>(pa);
if (pd) {pd->bark();  // 转换成功
}// 处理交叉转换(cross cast)
class Cat : public Animal {};
Animal* pa2 = new Cat;
Dog* pd2 = dynamic_cast<Dog*>(pa2);  // 返回 nullptr

3. const_cast

功能

  • 移除或添加 const/volatile 限定符

  • 不能改变实际类型,只能改变访问权限

用途

  • 修改第三方库中未正确声明为 const 的 API

  • 临时去除 const 以兼容旧代码(需谨慎)

示例


// 合法使用:去除 const 访问非 const 对象
int value = 42;
const int* cp = &value;
int* p = const_cast<int*>(cp);  // 合法
*p = 100;  // 安全:原对象本身不是 const// 危险操作:修改真正的 const 对象
const int ci = 50;
int* pci = const_cast<int*>(&ci);
*pci = 60;  // 未定义行为(UB)

4. reinterpret_cast

功能

  • 低级别的位模式重新解释

  • 不进行任何类型检查或转换

  • 可能导致未定义行为(UB)

用途

  • 指针与整数之间的转换

  • 不相关指针类型之间的转换(如 float* → int*)

示例


// 指针转整数(平台相关)
int x = 42;
uintptr_t addr = reinterpret_cast<uintptr_t>(&x);// 不同类型指针转换
float f = 3.14f;
int* pi = reinterpret_cast<int*>(&f);  // 重新解释二进制位// 危险:函数指针转换
typedef void (*FuncPtr)();
FuncPtr fp = reinterpret_cast<FuncPtr>(&x);  // 调用导致 UB

对比总结

转型操作符使用场景安全性运行时开销
static_cast明确的类型转换编译时检查
dynamic_cast多态类层次的安全向下转换运行时检查
const_cast修改 const/volatile 属性需人工保证
r einterpret_cast低级二进制重新解释 极不安全

最佳实践

  • 优先使用 static_cast,避免 C 风格强制转换

  • 慎用 const_cast:确保原对象不是真正的常量

  • 限制 reinterpret_cast:仅在硬件操作或系统编程时使用

  • 用 dynamic_cast 替代向下转型:结合 if 检查结果

// 安全转型模板
template <typename To, typename From>
To safe_cast(From from) {static_assert(std::is_polymorphic_v<From>, "Need polymorphic type");To to = dynamic_cast<To>(from);if (!to) throw std::bad_cast();return to;
}
http://www.dtcms.com/wzjs/463293.html

相关文章:

  • 提出网站推广途径和推广要点宁波seo外包引流推广
  • 网站建设SEO优化哪家好百度快照怎么看
  • 网站建设岗位主要做什么搜索引擎优化服务公司哪家好
  • 安卓优化大师app下载seo引擎优化怎么做
  • wordpress 页面分页重庆做网络优化公司电话
  • 如何提高网站排名谷歌浏览器网页版入口手机版
  • 网站的论坛怎么做凡科建站怎么导出网页
  • 农林网站建设seo关键词排名优化报价
  • 石家庄做网站下载百度app最新版到桌面
  • 网络营销导向型企业网站建设的原则网络营销模式有哪些类型
  • 成都装修设计公司网站百度网址安全检测中心
  • 新乡市建设工程网站温州网站建设开发
  • 国内最大c2c网站搜索引擎seo如何优化
  • 福建微网站建设网站推广优化排名
  • win2008r2 iis配置网站sem代运营托管公司
  • 豪华网站建设市场调研报告最佳范文
  • 互动网站设计与制作淘宝seo优化怎么做
  • 网站维护广州建网站seo编辑的工作内容
  • wordpress数据库配置失败网站排名优化专业定制
  • 网站模版 蓝色免费推广论坛
  • wordpress多站点功能百度搜索引擎怎么弄
  • 最新设计网站大全重庆seo网络推广
  • 哪些网站可以做外链长沙网站提升排名
  • 如何看别人网站用什么做的著名的营销成功的案例
  • 公安网站备案电话拉新推广
  • 汽车配件网上商城优化大师官网下载安装
  • 网站建设游戏开发重庆网站seo技术
  • 网站建设zvge网络推广方法大全
  • 做网站怎么样百度平台营销宝典
  • 网站权重6了该则么做优化方案网站优化排名方法有哪些