1. static_cast<T>() 可用于把指向A 的指针强制转换为指向B 的指针,
其约束条件是类B必须是类A的子类。例如:
A *obj = new B;
B *b = static_cast<B *>(obj);
如果该对象不是B 的一个实例,那么使用结果指针将可以导致莫名其妙的系统崩溃。

2.dynamiolcast <T>()与static_cast <T>()类似,只是它使用的是运行时类型信息(RTTI,runtime
type information)的方法来验证与这个指针相关的对象obj是否是类B 的一个实例。如果不是,
强制转换就会返回一个空指针null. 例如:
A *obj = new B;
B *b = dynamic_cast<B *>(obj);
if (b)
  b->someFunctionDeclaredInB() ;

在某些编译器中,dynamic_cast<T>()不能跨动态库工作。它也依赖于编译器对RTTI的支持,
但为了减小,可执行文件的大小,程序员可以关闭对RTTI的支持这一特色。
Qt过对Object的子类提供qobject_cast <T>()'来解决这些问题。T类必须是 QObject或者QObject子类继承而来的

3.const_cast<T>()添加或移除对指针或者引用的const 限定。
例如:
int MyClass::someConstFunction() const
{
if(isDirty()
{
MyClass *that = const_cast<MyClass *>(this);
that->recomputeInternalData();
}

在前面的例子中,我们舍弃了对this指针的const 限定,是为了调用非const成员函数recomputeInternalData();

(但不推荐这种做法,并且也通常可以通过使用mutable 关键字来避免这种做法。)

4、

reinterpre_cast<T>() 把任意类型的指针或者引用转换成任意的其他类型。例如:
short j = 0x1234;
if (reinterpret_cast<char &>(j) == oxl2)
std::cout << "The byte order is big-endian" << std::endl;

转载于:https://www.cnblogs.com/XiHua/p/4750219.html

C++ 4 种具有更 为准确语义的新强制转换类型相关推荐

  1. 一种基于语音识别的机器人语义识别系统的制作方法

    本发明涉及机器人语义识别,尤其涉及一种基于语音识别的机器人语义识别系统. 背景技术: 目前,很多家庭都拥有机器人,但是很多时候机器人并不能准确识别用户对其发出的指示,使用户操作机器人不方便,这样的机器 ...

  2. 实现线程哪种方法更好_实施数据以实现更好的用户体验设计的4种方法

    实现线程哪种方法更好 Gone are the days when design used to rely mainly on the color palettes and the creativit ...

  3. 知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍

    什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB)是一个结构化数据库,其中包含形式<主题,关系,对象>的事实集合,每个事实都可以随附所谓的 ...

  4. 5分钟NLP-知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍...

    来源:DeepHub IMBA 本文约1200字,建议阅读5分钟本文介绍了知识问答的两种主流方法. 什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB) ...

  5. Lora和Zigbee无线通讯技术的对比(哪种技术更适合物联网连接)

    Lora和Zigbee无线通讯技术的对比(哪种技术更适合物联网连接) ZigBee是基于IEEE802.15.4标准的低功耗局域网协议,LoRa是LPWAN通信技术中的一种,那么lora技术和ZigB ...

  6. 用于道路场景实时准确语义分割的深度双分辨率网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...

  7. 哪种营销方法效果最差_今日头条广告投放形式分几种?头条品牌营销曝光效果哪种广告更好?...

    一.今日头条广告形式分几种? 所以,广告主们也想借助今日头条投放广告.那么,今日头条怎么投放广告?今日头条平台有三种投放广告形式,开屏广告.信息流广告.详情页广告: 1.开屏广告 该广告位可以让你的产 ...

  8. TypeScript和JavaScript哪种语言更先进

    TypeScript和JavaScript哪种语言更先进 近两年来最火爆的技术栈毫无争议的是JavaScript,随着ES6的普及,不管是从前端的浏览器来看,还是后端的NodeJS场景,JavaScr ...

  9. jwt与token+redis,哪种方案更好用?

    问:jwt与token+redis,哪种方案更好用? 其实JWT就是Json Web Token,就是Token的典型方式.题主的JWT和Token+Redis的区别,其实都是Token,只是JWT的 ...

最新文章

  1. Redis使用认证密码登录
  2. React 入门笔记 1
  3. Swift之Delegate/闭包
  4. CentOS8更换源后失败问题
  5. 【Python】参考ggplot2,Seaborn将迎来超大版本更新!
  6. SAP成都研究院姚瑶:软件质量保证工作的变迁
  7. Java 获取链表的元素
  8. fgets 和gets_C编程中的fgets()和gets()
  9. 深度学习自学(十):人脸检测android端-JNI调试调用底层检测识别库
  10. 拓端tecdat|R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量股市波动率预测
  11. 泰山游记:晚上爬并无乐趣,什么也看不到
  12. iOS逆向:破解 APP防止dyld注入 的方法
  13. 【jzoj5053】【石子游戏】【搜索】
  14. KK课表抓取教务系统
  15. MindSpore21天实战营(2):基于BERT实现中文新闻分类实战
  16. 史上ElasticSearch 最全详细使用教程
  17. Fiddler功能讲解
  18. win10系统每天凌晨3点左右,自动关机重启
  19. 为什么程序员流动性大_为健康“流动”
  20. 如何快速启动wine安装的软件

热门文章

  1. 解读:百度官方公告对于6.22、6.28事件解释
  2. hbuilderx内置服务器启动失败_我们来看看Swoole是如何实现WebSocket服务器及客户端的...
  3. linux服务器进虚拟机,初次登录 Linux 服务器马上要做的 9 件事|Linux 中国
  4. Spring Cloud Config统一管理微服务配置
  5. ApplicationMaster启动流程
  6. (39)FPGA四种常用逻辑门(与非门)
  7. (36)System Verilog类中方法示例
  8. java中获取XML中的子xml_如何将子元素从XML提取到Java中的字符串?
  9. java按字节截取字符串牛客网_字符串计数
  10. 将GPIO外设挂到Cortex_M3 AHB总线上详细流程扩展外设步骤总结