【C++面试题】面试官:请简述多态实现的原理
111111壹一:
多态:一个接口多种方法。有静态多态和动态多态。静态多态的基础是重载,是编译时就确定了应该调用哪个函数,函数地址是早绑定。动态多态则是通过虚函数机制来实现的,基类定义虚函数,派生类重写基类虚函数,在程序运行时通过实际操作对象来确定调用的是基类方法还是派生类方法,函数地址是晚绑定。
【回复】回复 @昭昭biu :是的[doge]但是讲虚函数表又要说继承,多打很多字
【回复】实现原理应该是虚函数表吧AI视频小助理:
一、静态多态的实现原理是函数重载,允许在同一作用域中声明多个同名函数,但参数列表不同,通过函数名修饰实现函数存在。
00:23 - 函数重载的实现原理是基于函数重载的规则
02:59 - 函数名修饰的过程主要是在编译和汇编阶段中进行
07:44 - 将多个文件中的符号表汇总合并的过程是为了方便调用函数
二、函数名修饰和虚函数重写实现动态多态的原理,包括生成符号表、类型修饰名、虚函数重写流程等。
08:21 - 讲解多态实现的原理,通过静态和动态多态的实现方式
13:43 - 动态多态通过虚函数重写实现,运行时确定对象调用的函数地址
16:01 - 动态多态是一种运行时确定的绑定技术,与静态多态相对应
三、函数的地址和虚函数表指针的概念以及完绑定的流程,通过实例演示了虚函数表指针的初始化和调用过程。
16:43 - 函数的地址在编译期就已经确定,称为早绑定。
19:53 - 虚函数表指针在类的构造函数中初始化,每个类都有一个虚函数表指针。
24:51 - 虚函数表指针在类对象中,方便对象调用虚函数。
四、多态的实现原理,包括静态多态和动态多态,以及函数重载的实现过程和虚函数重写的执行流程。同时还详细讲解了函数名修饰的原理。
25:01 - 虚函数表指针是类对象的最前面,每个类对象都有一个虚函数表指针
30:24 - 函数重载是允许在同一个作用域下声明多个同名函数,通过参数列表区分
32:48 - 虚函数重写是利用玩绑定的技术,根据对象类型调用相应函数
五、虚函数表的生成和初始化,以及多态实现的原理。此外,还介绍了课程内容,包括精进基石、网络设计、基础组件、中间件、开源框架、运维部署、性能分析和分布式架构等。
33:20 - 虚函数表是一个一维数组,存放了虚函数的地址。
34:29 - 编译器会默认生成一个虚函数表指针,用于初始化虚函数表。
37:28 - 网络编程和网络原理是网络设计的基础,包括网络模型、POSIX API、TCP/IP流程等。
六、通过学习本课程可以从事哪些工作,列举了多个目标岗位,包括后端研发、安全开发、高性能服务器开发等。
41:40 - 介绍AI
--本内容由AI视频小助理生成,关注解锁AI助理,由@状元小丽 召唤发送信息闭塞:
别学软件,要学计算机学硬件,软件的知识都问烂了