小工具知识网

当前位置: 首页 > 行业知识 > 【C++】 为什么多继承子类重写的父类的虚函数地址不同?『 多态调用汇编剖析』

行业知识

【C++】 为什么多继承子类重写的父类的虚函数地址不同?『 多态调用汇编剖析』

2026-11-04 19:10:52 来源:互联网转载

���梓慕:个人主页

 个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》《算法》

每一个不曾起舞的日子,都是对生命的辜负


前言

本篇文章主要是为了解答有关多态的那篇文章那块的一个奇怪现象,大家还记得这张图片么?

你有没有发现:子类重写的func1函数地址竟然是不同的?

按常理讲:我们知道函数地址存储的是函数的指令的位置,这里『 应该是相同』的,才能保证对象在调用时都调用『 子类重写后的』func1方法 ,否则就失去了重写的意义了。

所以这里一定存在某些底层设计,那接下来就让我们转到『反汇编 』,来查看以下vs在这里是如何设计的吧。


欢迎大家收藏以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。

=========================================================================

GITEE相关代码:樊飞 (fanfei_c) - Gitee.com

=========================================================================


1.构建模型

首先,为了方便研究,我们构建函数模型:

class Base1 {public:virtual void func1() { cout 

上一篇:云电脑服务器地址怎么填?

下一篇:不用挤服务器怎么进游戏?