族谱网 头条 人物百科

运行期类型信息

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:429
转发:0
评论:0
C++虽然执行期类型信息是一个通用的电脑术语,但是通常用来称呼C++的特质。为了让C++的指令达到动态指派(dynamic_cast)、类型识别码(typeid)操作与例外处理的能力,执行期类型信息是必须的。C++语言提供了dynamic_cast和typeid两种运算符,typeid用于在运行时识别类型信息,dynamic_cast具有运行时类型识别和类型转换匹配2个功能。实现方法为每个类型对应一个consttype_info类型对象,存储了这个确切类型信息。在C++标准头文件中,type_info类重载了operator=()、operator!=()、name()等成员函数。dynamic_cast的语法形如:dest和src都必须为指针或者引用。如果运行时src和dest所引用的对象,是相同类型,或者存在is-a关系(public继承),则转换成功;否则转换失败。dynamic_c...

C++

虽然执行期类型信息是一个通用的电脑术语,但是通常用来称呼C++的特质。为了让C++的指令达到动态指派(dynamic_cast)、类型识别码(typeid)操作与例外处理的能力,执行期类型信息是必须的。

C++语言提供了dynamic_cast和typeid两种运算符,typeid用于在运行时识别类型信息,dynamic_cast具有运行时类型识别和类型转换匹配2个功能。实现方法为每个类型对应一个const type_info类型对象,存储了这个确切类型信息。在C++标准头文件中,type_info类重载了operator=()、operator!=()、name()等成员函数。

dynamic_cast的语法形如:

dest和src都必须为指针或者引用。如果运行时src和dest所引用的对象,是相同类型,或者存在is-a关系(public继承),则转换成功;否则转换失败。dynamic_cast只能用来转换多态类型(即定义了虚函数)的对象的指针或引用。如果操作数是指针,成功则返回目标类型的指针,失败返回NULL。如果操作数是引用,成功则返回目标类型的引用,失败抛出std::bad_cast异常。

dynamic_cast的“运行时类型的转换匹配”,是通过维护一棵由type_info类型对象作为节点的类型继承关系的树,遍历这棵继承树来确定一个待转换的对象的类型和目标类型之间是否存在is-a关系。

下列是一C++的执行期类型信息应用范例:

classbase{virtual~base(){}};classderived:publicbase{public:virtual~derived(){}intcompare(derived&ref);};intmy_comparison_method_for_generic_sort(base&ref1,base&ref2){derived&d=dynamic_cast(ref1);// rtti used here// rtti enables the process to throw a bad_cast exception// if the cast is not successfulreturnd.compare(dynamic_cast(ref2));}

参阅

面向对象程序设计

C++


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
打赏
私信

推荐阅读

· 信息
词源在古希腊文中信息单词为μορφή或εἶδος,后者是著名哲学家柏拉图的经常用词(以及后来的亚里士多德),以表示理想的身份或事物的本质。在英文单词中则源于拉丁文宾格形式(informationem)的主格(informatio):这个名词是由动词反过来又衍生出“informare”(告知)在“togiveformtothemind”,“todiscipline”,“instruct”,“teach”:“这么聪明的男人应该去通知他们的国王。”狭义定义美国数学家,信息论的奠基人克劳德·艾尔伍德·香农(ClaudeElwoodShannon)在他的著名论文《通信的数学理论》(1948)中提出计算信息量的公式,(一个信息由n{\displaystylen}个符号所构成,符号k{\displaystylek}出现的概率为pk{\displaystylep_{k}}),则有:这个公式和热力学的熵的本...
· 类型安全
定义RobinMilner对于类型安全所喊出的口号:这一口号的涵义,取决于语言形式化语义的类别。在指称语义学里,类型安全意谓者一个表达式的值具有良好类型τ,则表达式是一个属于τ的集合的真正的成员。1994年,AndrewWright和MatthiasFelleisen以操作语义学定义的公式描述:何谓现今的标准定义,以及对于类型安全的检验技术。根据上述方法,类型安全是以编程语言语义中的两个性质所决定的:这些性质不是无中生有的,而是和编程语言所描述出来的语义相连系,而且各式各样的语言存在着可以此基准来充实的广大的空间。因为“类型良好”程序的概念已是静态语义学的一部分,而“卡住”(或者“搞错”)则是动态语义学方面的属性。语言的类型安全性学术研究用途的玩具语言,常会提出类型安全方面的需求。另一方面,许多语言以人工方式所产生的类型安全,证实经常需要上千次的检查。不过,某些语言,如标准ML,其严格定义...
· 运
运姓“运”姓为较罕见的汉族姓氏,据南朝人何承天的《姓苑》记载,最早的运姓人出自嬴姓,运氏原籍江南徽郡。天津宝坻区大唐镇运家庄村是运姓的发源地。现在一共有三大支,其次还有河南南乐,甘肃酒泉附近,其它地方的姓运的,或多或少的,都是从这三个地方迁去。现,“运”姓,全国共有16690人,其中男女“运”姓所占人数分别为8672人、8018人中文名运姓读音yùn注音ㄩㄣˋ姓氏渊源《路史》目录1运姓读音2姓氏渊源3堂号郡望4姓氏分布5姓氏名人运姓运姓读音运:读音yùn(ㄩㄣˋ)运姓姓氏渊源较罕见姓氏。汉族姓氏。1、《路史》注其源:“鲁后有运氏。”当出自姬姓;2、《郑通志·氏族略》云:“鲁大夫食采于郓,子孙氏焉。‘郓’,亦作‘运’。”这实际上又是说运姓与郓姓同源。3、据南朝人何承天的《姓苑》记载,最早的运姓人出自嬴姓,姓氏因为有祖先受封在运国,后来便以国名为姓。而明朝人陈士元在《姓觽》中也引《郡国志》说,...
· 信息需求
数据的定义数据(Data)被定义为单纯的文字或字词,例如是“好”。“好”这个字除了本身的意义之外并没有任何意思。信息的定义广义上当由两种或两种以上的数据链接在一起时形成有其他意思的信息(Information)及为信息。意即数据经过整理或分析将数据变的有其他意义即为信息。狭义上,信息就是符号的排列的顺序。但作为一个概念,信息有着多种多样的含义。一般来说,与信息这一概念密切相关的概念包括约束(constraint)、沟通(communication)、控制、数据、形式、指令、知识、含义、精神刺激、模式、感知以及表达。信息是人们在适应外部世界并使这种适应反作用于外部世界过程中,同外部世界进行互相交换的内容和名称。需求的定义需求即内心渴望的状态,但是对于现况感到不满足,所产生出来想要改变的一种心理落差状态,另外此一感觉会改变一个人的行动或者想法。
· 类型论
类型论体系主要简单类型λ演算,一种高阶逻辑;直觉类型论;系统F;LF经常用来定义其他类型论;构造演算及其派生理论。次要Automath(英语:Automath);ST类型论;组合逻辑的一些形式;λ立方体(英语:Lambdacube)中定义的其他;其他有类型λ演算;其他纯类型系统(英语:puretypesystem)。活跃正在研究中的同伦类型论参考文献延伸阅读Andrews,PeterB.,2002.AnIntroductiontoMathematicalLogicandTypeTheory:ToTruthThroughProof,2nded.KluwerAcademicPublishers.Cardelli,Luca,1997,"TypeSystems,"inAllenB.Tucker,ed.,TheComputerScienceandEngineeringHandbook.CRCPres...

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信