首先明白指针的组成,指针是由一个其指向的地址值和对该地址值得解释方式两部分组成。

p1:指向基类的指针, p2:指向派生类的指针

p1 = p2;

当将一个派生类的指针赋给一个基类指针时,p2的地址被完全复制给p1,两者拥有相同的地址,但是对于这个地址的解释方式对于p1来说还是p1原有的解释,那在通过p1调用一个虚函数时,通过p1对地址的解释找到对应的虚表指针(此时这个虚表指针指向的是派生类的虚函数表),再通过虚表调用派生类的虚函数来实现多态。这个应该和虚表指针在基类及派生类中的位置有关系,有可能是放在了内存结构的顶部,这样不会因为子类比父类占用内存大而访问不到虚表指针,可能不是这样,还不懂

转载于:https://www.cnblogs.com/AKUN-FYK/p/11141893.html

关于引用与指针实现多态的一些记录相关推荐

  1. 引用和指针的区别?传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?

    引用和指针的区别 (1) 引用在创建的同时必须初始化,即引用到一个有效的对象:而指针在定义的时候不必初始化,可以在定义后面的任何地方重新赋值. (2) 不存在NULL引用,引用必须与合法的存储单元关联 ...

  2. c++中的引用和指针

    引用和指针 1.引用: 2.指针: 区别: 1.引用: C++是 C 语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于 对象的程序设计,还可以进行以继承和多态为特点的面向对象的 ...

  3. c++引用与指针的区别

    ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指针需 ...

  4. 同时用引用和指针 int *a;

    同时用引用和指针可以吗? 见到一个这样的声明 int *&a: 这是什么意思? a 是一个 指向 int* 的引用. 你可以了解一下右左法则,读复杂类型声明(当然,这个int*& a还 ...

  5. [C++再学习系列] 引用和指针

    下面是网上关于引用和指针区别的常见答案: 引用和指针有如下三种区别: 1 引用必须在声明时初始化,而指针不用: 2 NULL不能引用,而指针可指向NULL: 3 引用一旦声明,引用的对象不能改变(但对 ...

  6. C 引用和指针的区别

    指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 指针和引用的定义和性质区别: 指针:指针是一个变量,只不过这个变量存储的是一个地址,指向 ...

  7. 【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

    文章目录 I . 引用概念 II . 引用声明 III . 引用 地址 内存 分析 IV . 常引用 V . 引用作为参数 VI . 引用 与 指针 对比 I . 引用概念 C++ 对 C 扩充 : ...

  8. 引用与指针的异同-基础篇

    引用与指针的异同 1. 指针和引用的实质 同:都指向变量的内存地址 异:指针是地址变量:引用是地址常量 2. 指针和引用的内存分配情况 指针分配单独的内存空间,存放指向的变量的地址:引用仅是变量的别名 ...

  9. 面向对象简述--对象、引用、指针

    类和成员对象 [定义类] (1)两个重要概念: 类(class):类是某一批对象的抽象,可以把类理解成某一种概念. 对象(object,也被称为实例,instance):对象才是一个实际存在的实体. ...

最新文章

  1. ui曲线谁是横坐标_vue项目引入echarts折线图 横坐标显示问题
  2. 推荐系统(5)—隐语义模型(LFM)
  3. ckeditor 4.2.1_演示 ckeditor 上传插入图片
  4. LOJ2195 旅行
  5. pandas 提取某几列_【科学计算工具二】初识Pandas
  6. MDT2010学习(八),MDT结合WDS部署Win7 x86企业版
  7. Mac小技巧——开启Google Chrome浏览器加速模式
  8. Oblivious transfer and Garbled circuits
  9. 如何使用c语言开发ebpf程序
  10. ISBN号编码规则【转载】
  11. C语言回文数判断,结果写入文件中
  12. Enhancing Diversity in Teacher-Student Networks via Asymmetric branches for Unsupervised reid论文解读
  13. Unity3D打印拓展XMDebug
  14. PAKDD 2019 中国企业深兰科技夺冠:AutoML 如何推动 AI 应用落地?
  15. 让word从第二页开始标记页脚
  16. NVIDIA 3D VISION 在戴尔Alienware/XPS系列上的使用
  17. 百度网盘加速下载教程
  18. 计算机系统瘫痪重装系统文件怎么保存,我的电脑已经瘫痪,进不去了,要重做系统,现在应该怎么把C盘备份呢? 爱问知识人...
  19. 了解一下,Android 10 Build系统
  20. 【C++】用递归函数实现Hermite多项式求值

热门文章

  1. Bitmap的使用(二)
  2. 题目1030:毕业bg
  3. 51Nod 1242 斐波那契数列的第N项
  4. ECharts--自定义tooltip属性
  5. springmvc 配置多个数据源,并动态切换
  6. 佩特来项目经验小集合(2)___组合查询存储过程,报错 quot;varchar JBID=#39;#39; 转换成数据类型 int 时失败quot;...
  7. Cordova for iOS[ PhoneGap]
  8. fineUI表格控件各属性说明
  9. 马士兵java视频学习顺序
  10. 如何编程实现开启或关闭GPS(转)