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

建设企业功能型网站免费推广平台整理

建设企业功能型网站,免费推广平台整理,东莞建筑公司排名,郑州航海路网站建设C的类型转换运算符#xff1a;reinterpret_cast reinterpret_cast 是 C 中与 C 风格类型转换最接近的类型转换运算符。它让程序员能够将一种对象类型转换为另一种#xff0c;不管它们是否相关#xff1b;也就是说#xff0c;它使用如下所示的语法强制重新解释类型#xf…C的类型转换运算符reinterpret_cast reinterpret_cast 是 C 中与 C 风格类型转换最接近的类型转换运算符。它让程序员能够将一种对象类型转换为另一种不管它们是否相关也就是说它使用如下所示的语法强制重新解释类型 Base* objBase new Base (); Unrelated* notRelated reinterpret_castUnrelated*(objBase); // The code above compiles, but is not good programming!*这种类型转换实际上是强制编译器接受 static_cast 通常不允许的类型转换通常用于低级程序如驱动程序在这种程序中需要将数据转换为 API应用程序编程接口能够接受的简单类型例如有些 OS 级 API 要求提供的数据为 BYTE 数组即 unsigned char* SomeClass* object new SomeClass(); // Need to send the object as a byte-stream... unsigned char* bytesFoAPI reinterpret_castunsigned char*(object);上述代码使用的类型转换并没有改变源对象的二进制表示 但让编译器允许程序员访问 SomeClass 对象包含的各个字节。由于其他 C类型转换运算符都不允许执行这种有悖类型安全的转换因此除非万不得已否则不要使用 reinterpret_cast 来执行不安全不可移植的转换。 应尽量避免在应用程序中使用 reinterpret_cast因为它让编译器将类型 X 视为不相关的类型 Y这看起来不像是优秀的设计或实现。 解释 与 static_cast 不同但与 const_cast 类似reinterpret_cast 表达式不会编译成任何 CPU 指令除非在整数和指针间转换或在指针表示依赖其类型的不明架构上。它纯粹是一个编译时指令指示编译器将 表达式 视为如同具有 新类型 类型一样处理。 唯有下列转换能用 reinterpret_cast 进行但若转换会转型走常量性或易变性则亦不允许。 整型、枚举、指针或成员指针类型的表达式可转换到其自身的类型。产生的值与 表达式 的相同。(C11 起) 指针能转换成大小足以保有其类型所有值的任何整型类型例如转换成 std::uintptr_t 任何整型或枚举类型的值可转换到指针类型。指针转换到有足够大小的整数再转换回同一指针类型后保证拥有其原值否则结果指针无法安全地解引用不保证相反方向的往返转换相同指针可拥有多种整数表示。不保证空指针常量 NULL 或整数零生成目标类型的空指针值为此目的应该用 static_cast 或隐式转换。 任何 std::nullptr_t 类型的值包含 nullptr可转换成任何整型类型如同它是 (void*)0 一样但没有值能转换成 std::nullptr_t甚至 nullptr 也不行为该目的应该用 static_cast。(C11 起) 任何对象指针类型 T1* 可转换成指向对象指针类型 cv T2 。这严格等价于 static_castcv T2*(static_castcv void*(表达式))这意味着若 T2 的对齐要求不比 T1 的更严格则指针值不改变且将结果指针转换回原类型将生成其原值。任何情况下只有类型别名化type aliasing规则允许见下文时结果指针才可以安全地解引用 T1 类型的左值表达式可转换成到另一个类型 T2 的引用。结果是与原左值指代同一对象但有不同类型的左值或亡值。不创建临时量不进行复制不调用构造函数或转换函数。只有类型别名化type aliasing规则允许见下文时结果指针才可以安全地解引用 任何函数指针可转换成指向不同函数类型的指针。通过指向不同函数类型的指针调用函数是未定义的但将这种指针转换回指向原函数类型的指针将生成指向原函数的指针值。 一些实现上特别是在任何 POSIX 兼容的系统上即基于 dlsym 的要求函数指针可以转换成 void* 或任何其他对象指针反之亦然。若实现支持双向的转换则转换回原类型将生成原值否则结果指针不能安全地解引用或调用。 任何指针类型的空指针值可转换成任何其他指针类型产生该类型的空指针值。注意不能用 reinterpret_cast 将空指针常量 nullptr 或任何其他 std::nullptr_t 类型的值转换为指针为此目的应该使用隐式转换或 static_cast。 成员函数指针可转换成指向不同类型的不同成员函数的指针。转换回原类型将生成原值否则结果指针不能安全使用。 指向某类 T1 的成员对象的指针可转换成指向另一个类 T2 的另一个成员对象的指针。若 T2 的对齐不比 T1 更严格则转换回原类型 T1 将生成原值否则不能安全地使用结果指针。 同所有转型表达式结果是 左值若 new_type 是左值引用或到函数类型的右值引用 亡值若 new_type 是到对象类型的右值引用 否则为纯右值。 演示 reinterpret_cast 的一些用法 #include cstdint #include cassert #include iostream int f() { return 42; } int main() {int i 7;// 指针到整数并转回std::uintptr_t v1 reinterpret_caststd::uintptr_t(i); // static_cast 为错误std::cout The value of i is 0x std::hex v1 \n;int* p1 reinterpret_castint*(v1);assert(p1 i);// 到另一函数指针并转回void(*fp1)() reinterpret_castvoid(*)()(f);// fp1(); 未定义行为int(*fp2)() reinterpret_castint(*)()(fp1);std::cout std::dec fp2() \n; // 安全// 通过指针的类型别名化char* p2 reinterpret_castchar*(i);if(p2[0] \x7)std::cout This system is little-endian\n;elsestd::cout This system is big-endian\n;// 通过引用的类型别名化reinterpret_castunsigned int(i) 42;std::cout i \n;[[maybe_unused]] const int const_iref i;// int iref reinterpret_castint(const_iref); // 编译错误——不能去除 const// 必须用 const_cast 代替int iref const_castint(const_iref); }可能的输出 The value of i is 0x7fff352c3580 42 This system is little-endian 42该文章会更新欢迎大家批评指正。 推荐一个零声学院免费公开课程个人觉得老师讲得不错 分享给大家LinuxNginxZeroMQMySQLRedis fastdfsMongoDBZK流媒体CDNP2PK8SDocker TCP/IP协程DPDK等技术内容点击立即学习: 服务器课程C服务器
http://www.hkea.cn/news/14442530/

相关文章:

  • 培训建设网站wordpress友情链接页面插件
  • 安美东莞网站建设wordpress一键倒入微信
  • 滁州58同城网站怎么做编程猫官网
  • 如何自己做游戏软件北京seo课程培训
  • 网站备案主办单位性质村级网站建设 不断增强
  • 网站建设技术方面论文wordpress图片0x0
  • 高端品牌网站建设兴田德润怎么联系东莞建筑
  • 如何自建网站?品牌网站和优化网站
  • html5网站模板舒城县建设局网站
  • icp备案网站财务网站建设
  • 建网站需要注意什么抖音seo培训
  • 网站建设推广岗位成都微信小程序推广培训公司
  • 做网站人员有什么名称wordpress自动生成密码
  • 网站建设售后sae wordpress 更新
  • 熵网站企业网站域名注册
  • 网站备案号查询系统做科研交流常用的网站
  • 建设厅网站的秘钥怎么买百度搜索关键词优化
  • 网站加载很慢怎样与其它网站做友情链接
  • 湖南基础建设投资集团网站有的网站在浏览器打不开怎么办
  • 福建嘉瑞建设工程有限公司网站怀化网络推广哪家服务好
  • 根河企业网站建设郑州app制作一个需要多少钱
  • 手机软件网站凡科做网站不好
  • 做mla的网站工作网站开发制作
  • 长春餐饮网站建设中铁建设集团门户网站登陆
  • 电子商务网站建设考卷数字营销招聘
  • h5网站建设贵州seo技术查询
  • 网站中文域名好不好wordpress和drupal
  • 东阳网站推广wordpress wp_query
  • 池州网站建设开发什么是网络设计制作
  • 2018年静安区品牌网站建设优秀网站网页设计