我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合图库 > 多态逻辑 >

error C2683: “dynamic_cast”:“XXX”不是多态类型

归档日期:06-16       文本归类:多态逻辑      文章编辑:爱尚语录

  是的是的,使用dynamic_cast会引发效率上的担忧,但是有时候这是必要的,而有时候,这是必须的,在自己不预加运行时识别策略的时候,如果要使用运行时处理机制,通过dynamic_cast判断指针或检测异常是一个非常直观的想法,而且不少时候这也很有效。

  在我的编译器上调试这种情况发现,子类里明确包含了基类,但是一个基类指针指向子类的时候,无法识别出来子类的附加信息。也就是说,在没有虚函数参与的时候,并没有神秘的vtable存在,c++对象模型里似乎也提到了(我记不清是不是这本书了,sorry)编译器实现虚函数靠的是vtable策略,但是这话的深层含义却是如果没有虚函数存在,编译器没有必要浪费空间实现一个虚指针、vtable(我开始脊背发凉了)。看来大师的每一句话都要仔细研究。

  也就是说,如果希望使用dynamic_cast技术或者你不得不使用dynamic_cast技术,那应该确保你在多态类上使用它(也就是你的继承体系里有虚函数)。

  1.使用方式:dynamic_cast的使用说明:(1)只能有用于指针和引用的转换,将父类指针或引用转换为子类指针和引用(2)要转换的类型中必须包含虚函数(3)如果转换成功,返回的就是子类的地址,如果...博文来自:菜鸟进化史

  在移植c++代码到c的时候,经常会出现一个奇怪的错误,errorC2275:“XXX”:将此类型用作表达式非法表达式非法,这个错误是由于c的编译器要求将变量的申明放在一个函数块的头部,而c++没有这样...博文来自:l709177693的专栏

  C++的四个类型转换,以下只是进行了试验而已,原理有待发掘1、static_cast静态类型转换,(1)在转换的两边都是基本类型的时候,感觉和C风格的强制类型转换差不多。floatfValue=6.5...博文来自:humadivinity的博客

  在收到消息时,对象要予以响应。不同的对象收到同一消息可以产生完全不同的结果,这一现象称为多态。在使用多态的时候,用户可以发送一个通用的消息,而实现的细节由接收对象自行决定。这样,同一消息就可以调用不同...博文来自:TESE_yan的博客

  1.多态定义:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。2.如何实现多态:C++中的多态只能通过指向基类类型的指针和引用来...博文来自:魏波

  接口的多种不同的实现方式即为多态。通俗点说一种类型可以应对多种类型的操作。在C/C++中有多态类型有指针、union、模板、void*;多态类型在作为接口时有数据保护和隐藏的效果。 指针:在具有继承关...博文来自:Lemon

  dynamic_cast运算符的主要用途:将基类的指针或引用安全地转换成派生类的指针或引用,并用派生类的指针或引用调用非虚函数。如果是基类指针或引用调用的是虚函数无需转换就能在运行时调用派生类的虚函数...博文来自:sky0942的博客

  多态分为两种:通用的多态和特定的多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。   通用的多态又分为...博文来自:WangIcter的专栏

  总体是分为通用多态和专用多态:通用多态:不同的类型值,执行相同的代码。专用多态:不同的类型值,执行不同的代码。(类似枚举“什么类型,执行什么操作”) 通用多态分为:参数多态和包含多态参数多态:参考c+...博文来自:luckyboyPB的专栏

  关于Java类型的转换,就是因为Java的三大特性之一的多态造成的,正是因为多态让我们在写程序时,少些了很多代码,并且实现了很大的扩展性,比如在方法中的形参中我们定义为父类引用,但实际传入的实参是子类...博文来自:jx1234562的博客

  面向对象的三大特性是封装,继承和多态,本文主要介绍C++里的多态特性在编译器把函数或模板连接生产执行代码的过程中,有两种联编方式,一种是静态联编,另外一种是动态联编,静态联编是在编译阶段就把函数连接起...博文来自:smilesundream的博客

  RTTI(Run-TimeTypeIdentification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。即:在运行时,识别一个对象的类型。在Jav...博文来自:minghai

  简单整理了下该知识点。它们一个动态转换,一个是静态转换。dynamic_cast是试探映射,如dynamic_cast*pB意思是“我希望它是A*,并打算要求它是”。它通常被称为类层次的动态导航。 s...博文来自:HEVC_heiyue的专栏

  接触过C语言的同学可能很喜欢使用C风格的强制转换(也就是一般形式的强转)。(类型)变量用起来很方便,可以显式的把某些类型转换成我们想要的类型,比如(int*)字符。这样的使用对常见的内置类型可谓是屡试...博文来自:Jerish的博客

  理解C#多态性之前首先理解一下什么叫多态。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。C#多态性通过派生类覆写基类中的虚函数型方法来实现。C#多态性分为两种,一种是编...博文来自:hdhai9451的专栏

  多态分为两种:通用的多态和特定的多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。   通用的多态又分为...博文来自:HK_John的博客

  是的是的,使用dynamic_cast会引发效率上的担忧,但是有时候这是必要的,而有时候,这是必须的,在自己不预加运行时识别策略的时候,如果要使用运行时处理机制,通过dynamic_cast判断指针或...博文来自:Virtual_Func的博客

  0x00dynamic_castlt;gt;简介将指向基类的指针或者引用转换成指向这个基类派生类的指针或者引用,转换成功将会得到派生类的指针或者引用,如果失败,将会返回一个null...博文来自:Welcome ! ---Zackary

  dynamic_cast主要用于在父类、基类指针的转换。从派生类指针转向基类指针时,即进行上行转换,是安全的。从基类指针转向派生类指针时,即进行下行转换,要求基类至少有一个虚函数,并会做安全检查,转换...博文来自:znHD的博客

  dynamic_cast用于具有继承体系的转换中,用于转换指针和引用,通常类必须要有一个虚函数,因为运行时类的运行信息存储在虚表中,如果没有虚表使用dynamic_cast将会导致编译错误。dynam...博文来自:FAS ------ 一颗好奇心,一页好代码!

  虚函数对于dynamic_cast转换的作用为何使用dynamic_cast转换类指针时,需要虚函数呢。Dynamic_cast转换是在运行时进行转换,运行时转换就需要知道类对象的信息(继承关系等...博文来自:jiaoyongqing134的专栏

  很遗憾的,因为dynamic_cast返回值没有做检查,导致了一个小bug。又杯具了一回。因为我工作中很大一部分任务是调试和修改别人的bug,修改自己因为小纰漏造成的bug,是很打击自己的一件事情。 ...博文来自:David的专栏

  给大一学生上习题课的一个题目用到多态性下的类型转换。对于多态继承的类型转换,分为upcast和downcast.这两种转换的区别从名字上很容易看出来。从派生类转换到基类为upcast,从基类到派生类称...博文来自:zhiweiyouzhishenghuo的专栏

  浅议Dynamic_cast和RTTI写这篇博文的目的是,记录学习过程。对于问题要较真,在解决这个问题中会学到很多,远远超过自己期望,锻炼思维,享受这个过程。问题:Static_cast与Dynami...博文来自:u010585135的专栏

  A为基类,B为派生类。现在定义: A*pA;B*pB;一般来说,pB可以转换为pA,(把派生类的指针或引用转换成基类表示),称之为上行转换。但反之一般是不行的,也就是将pA转换为pB,(把基类指针或引...博文来自:超频化石鱼的博客

  尝试修复这个程序的错误: 点击下载源代码文件夹...博文来自:weixin_34331102的博客

  虚函数对于dynamic_cast转换的作用为何使用dynamic_cast转换类指针时,需要虚函数呢。Dynamic_cast转换是在运行时进行转换,运行时转换就需要知道类对象的信息(继承关系等...博文来自:欧阳海宾

  从事IT行业的都知道一个开发者的水平基本取决于你做过多少项目,唯有见多才能识广,这次收集的34套Java经典项目主要包括26套Java web项目,6套Java swing项目,2套Java控制台项目...博文来自:明礼馨德的博客

  一、适用场景内存属于稀缺资源,不能随意浪费。如果在一个系统中有很多个完全相同或相似的对象,我们就可以使用享元模式,让他们共享一份内存即可,不必每个都去实例化对象,从而节省内存空间。二、模式核心 享...博文来自:小小本科生成长之路

  一、前言最近由于研究需要,要用到线性判别分析(LDA)。于是找了很多资料来看,结果发现大部分讲的都是理论知识,因此最后还是看的一知半解,后来终于找到了个英文的文档,作者由PCA引入LDA,看过后豁然开...博文来自:jnulzl的专栏

  相信学习编程的同学,或多或少都接触到算法的时间复杂度和空间复杂度了,那我来讲讲怎么计算。        常用的算法的时间复杂度和空间复杂度 一,求解算法的时间复杂度,其具体步骤是: ⑴ 找出算法...博文来自:杨威的博客

  作者fbysss声明:本文由fbysss原创,转载请注明出处关键字:tomcat监控...博文来自:fbysss的专栏

  从trust zone之我见知道,支持trustzone的芯片会跑在两个世界。 普通世界、安全世界,对应高通这边是HLOS,QSEE。 如下图: 如下是HLOS与QSEE的软件架...博文来自:邓永坚的blog

  公司产品之前使用xmpp作为底层库,之前同事编译自己的sdk静态库想生成.a库,但是各种编译问题(其实耐心修改配置都能解决),但是从百度找到方案用framework可以解决,所以最终使用的是frame...博文来自:mingming24的专栏

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  偶然间发现各路大牛的一些python创作,不得不说python是一个比较全面的语言,附上网址以后可能需要用到python视觉处理,爬虫数据分析的时候可以用的上吧2333 python小项目: ht...博文来自:王甲评的博客

  docx4j官方提供了一些例子,本文只是其中一部分应用的简单例子。需要注意的地方是页眉和页脚,必须创建对应关系才能起作用。页眉和页脚添加图片的时候,第二个参数sourcePart是必须的,调用的cre...博文来自:偶尔记一下

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  安装cadence之前对操作系统需要进行一些必要的配置。博文来自:maxwell2ic的博客

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  一、代理模式为某个对象提供一个代理,从而控制这个代理的访问。代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。代理类负责请求的预处理、过滤、将请求分配给委托...博文来自:小小本科生成长之路

  在MATLAB中,可以注释一段程序。 使用“%{”和“%}”。 例如 %{ 。。。 %} 即可。 经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 ...博文来自:知识小屋

本文链接:http://lcvam.com/duotailuoji/579.html