c++多态的续集

编程四大件

??????
数据结构和算法、计算机网络、操作系统、设计模式
看到的一个关于学习c++的路线规划的 给链接吧
从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?C语言、C++学习路线?

++++++++++++++++++++++++++2.27

回想一下多态的依赖

类需要存在继承关系
存在虚函数virtual
派生类中存在和基类中相同的虚函数
通过指针和引用访问类内的虚函数成员I

对象的模型分类:

  1. 简单对象模型:最为简单,在此模型下对象是由一系类的指针组成,均指向类内成员的方法或成员属性,每个数据成员和成员方法的在类中所占大小相同,指针大小,很容易获得对象大小。== 效率有限==
  2. 表格驱动对象模型:此模型下,成员包括数据成员(成员属性)和方法成员,访问时候通过两个表(一个存放数据,一个存放方法地址),类内对象访问成员时候通过两个表访问,即类的对象只包函两个表的指针。
  3. c++的对象模型:(目前正在使用) 此模型下,非静态的成员均被置于每一个类的对象中(非私有的类内成员可以被成员访问),而静态的成员将被置于对象之外(static存储在程序的静态存储区而非栈上空间),静态方法和非静态方法均被放在类对象之外,对于virtual函数,编译器会根据所谓的虚函数表和虚函数指针访问
    在每一个类中均生成一个表格(virtual table(vtbl)),其中存放着一堆指针,指向类中每一个虚函数,虚表中函数的地址按照声明的顺序排序
    虚表中放着的指针叫做虚指针(virtual pointer(vptr)),由编译器分配,vptr的设置与重置都由类的构造函数,析构函数,赋值操作完成。 一般放在显示声明的成员之后,不过许多情况下放在类对象的最前端

虚函数表的前面设置了一个指向类型信息的指针,用来支持RTTI(run time type information(多态属于动态多态,又被称为运行时多态)),RTTl是针对多态进行的设计,包括了类的继承、对象本身的描述,当然只有具有virtual函数的时候才会产生。
来点关于RTTI的资料:上链接
(( 没看懂系列 再来一个 直接百科资料吧 RTTI百度百科))

进入无码不行环节

多继承中的第二个vptr?? 怎么选第二个函数

虚来虚去的 去b站找个视屏看看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值