博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于多态
阅读量:3739 次
发布时间:2019-05-22

本文共 483 字,大约阅读时间需要 1 分钟。

注:结合部分C++相关书籍以及知乎有关多态的回答

1.为什么要提出多态?

  希望在同一个方法中派生类和基类中的行为是不同的。即方法的行为取决于调用该方法的对象是谁。

2.多态是什么?

(从知乎用户ShuanGuan回答这方面相关的问题那“复制”的图,地址:)

 同一函数的不同表现形态。会根据所调用函数的对象类型来执行相应的成员函数。多态一般具有三个条件:①存在继承②父类的引用或者指针指向子类的对象③虚函数。

 编译器对与虚函数采用动态联编,指通常在运行程序时才能确定对象的类型。编译器不会在编译的时候确定对象调用的函数地址,而是在运行的时候再去确认对象的类型以及正确的调用函数(迟绑定)。

3.多态的作用

  增强程序的可扩展性。

4.虚函数与虚指针以及虚表

  *编译器会为每个包含虚函数的类创建一个虚表,该表是一个一维数组,存放每个虚函数的地址。

  *定位虚表:编译器另外为每个类的对象提供了一个虚表指针(vptr),这个指针指向了对象所属类的虚表。

  *虚表初始化:在构造函数中进行虚表的初始化和虚表指针的初始化。

5.虚拟继承是为了解决多重继承下公共基类的多份拷贝的问题。

转载地址:http://wbtin.baihongyu.com/

你可能感兴趣的文章
【TencentOS tiny】深度源码分析(4)——消息队列
查看>>
kubernetes(五)二进制安装-安装docker服务
查看>>
概率统计23——假设检验理论(2)
查看>>
Mysql-环境配置及问题解决
查看>>
linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用
查看>>
保姆级教程!手把手教你使用Longhorn管理云原生分布式SQL数据库!
查看>>
通过jsDelivr + github 搭建一个简易图床
查看>>
目前国内最热门的四款远程桌面控制软件
查看>>
基础概念1
查看>>
Billboard HDU - 2795(树状数组,单点修改,区间查询)
查看>>
centos7搭建easy-mock服务
查看>>
数据结构系统学习(1)数据类型和数据结构的概念
查看>>
关于git pull机制和游戏开发热更新思考
查看>>
程序员如何跨过自我推销的难关?
查看>>
nginx基础
查看>>
我用C++复刻了这款上世纪最伟大的游戏
查看>>
网络协议笔记
查看>>
Django---启动admin的报no such table: auth_user错误
查看>>
不相交集类及其应用生成迷宫
查看>>
使用kali(外网)生成木马入侵安卓手机
查看>>