首页 > 编程语言 >c++中具有继承关系的隐式转换问题

c++中具有继承关系的隐式转换问题

时间:2023-02-24 13:12:46浏览次数:36  
标签:转换 show 继承 多态 c++ a2 CPP 隐式

起因是群里有人问:

 

 

 2,3,4是为什么。

解答:

2:2是因为B中的show(A)才是多态,A a2=new B(),此时a2只有show(A)的多态,而面对的类型切割问题,在编译的时候派生类会将基类的多态的函数隐藏掉,所以指向的肯定是派生类的函数

3:首先它先不隐式转换去A和B的重载里面寻找,优先级B>A。但是在B里面找不到,所以匹配到A里面,因为不隐式转换比隐式转换的优先级高

4:4的时候B中的show(B)和show(A)都可以,但是B离D更近

我查了好多资料,终于搞懂了,其实很简单,刚开始大意了,没有闪

 对了,因为JAVA是拿CPP写到,它的多态和CPP差不多

 

标签:转换,show,继承,多态,c++,a2,CPP,隐式
From: https://www.cnblogs.com/yanzhao-x/p/17151041.html

相关文章

  • 使用C++实现Modbus CRC16检验相关内容
    使用C++实现ModbusCRC16检验相关内容ModbusCRC-16校验代码以下为ModbusCRC-16校验代码函数:其中参数int*crc_sum为校验返回值,分为两个字节;参数int*data_blk_ptr......
  • C++ primer 5th 第二章 变量和基本类型 阅读笔记
    第二章变量和基本类型第一节基本内置类型C++标准规定了算术类型尺寸的最小值,同时允许编译器赋予这些类型更大的尺寸。比如:类型含义最小尺寸bool布尔类型......
  • C++的内存模型
    C++的内存包含4个大区,它们分别是代码区、全局区、栈区和堆区。以下将对它们的分区进行进一步的阐述。代码区:对于一段代码,首先要经过编译之后生成可执行文件才能执行,在Wi......
  • js的继承的实现与代码编写
    js的继承的实现与代码编写一、继承  对象的一个类可以从现有的类中派生,并且拥有现有的类的方法或是属性,这和过程叫做继承。被继承的类叫做父类或是基类,继承的类叫做子类......
  • 深入学习jquery源码之继承框架的实现
    深入学习jquery源码之继承框架的实现继承框架的实现实现自己的extend方法/*SimpleJavaScriptInheritance*ByJohnResighttp://ejohn.org/*MITLicensed.*///Insp......
  • 深入学习jquery源码之继承方案的选择
    prototype实现继承原型链继承的主要思想是:让子类型的引用指向父类型的实例。每次在函数(类)中定义了成员方法,都会导致实例有副本,因此可以借助prototype原型,进行改进先访问自己......
  • 面向对象高级1-static&继承
    1,static1,static修饰成员变量static静态,可以修饰成员变量、成员方法。成员变量按照有无static修饰可以分为两种:类变量:属于类,与类一起加载一次,在内存中只有一份,可......
  • C++学习(2)STL八股文
    1、STL实现原理及其实现STL提供了六⼤组件,彼此之间可以组合套⽤,这六⼤组件分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。STL六⼤组件的交互关系:a.容......
  • C++问题集
    const函数名后,加const使类的成员函数,不能修改类内成员。mutable可以突破const限制!在函数后面加const只能在类的成员函数中实现!普通的函数是无法进行这样的操作的!vo......
  • C/C++图书管理系统[2023-02-23]
    C/C++图书管理系统[2023-02-23](辅修)高级语言程序设计课程设计图书管理系统设计并实现一个学校图书馆的图书管理系统。具体要求:1、 图书信息和借阅信息等保存在文本文......