C++之虚函数的实现技术

cpp 复制代码
#include <iostream>
using namespace std;
class A{
public:
    int m;
};
class B{
public:
    int m;
    virtual void foo(void){
        
    }
};
int main(void){
    A a;
    B b;
    cout << "a size : " << sizeof(a) << endl;
    cout << "b size : " << sizeof(b) << endl;
    return 0;
}
  • 每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针
  • 当编译器编译以下test函数时只知道pb是B*类型的指针,并不知道它指向的具体对象类型 :pb可能指向的是B的对象,也可能指向的是D的对象。
  • 只有当程序执行过程中给test函数传递了具体参数才能确定pb指向了哪个对象,从而确定访问哪个虚表,从而实现了多态
相关推荐
邪修king29 分钟前
UE5 进阶篇第一弹:中期架构升级 —— 组件化开发与 Gameplay 框架实战
c++·游戏·架构·ue5
知识领航员10 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
jf加菲猫11 小时前
第21章 Qt WebEngine
开发语言·c++·qt·ui
码农-阿杰12 小时前
深入理解 synchronized 底层实现:从 HotSpot C++ 源码看对象锁与 Monitor 机制
开发语言·c++·
Szime12 小时前
深智微IC华润微代理:MCU选型与工业控制方案推荐
c++
叼烟扛炮13 小时前
C++ 知识点18 内部类
开发语言·c++·算法·内部类
汉克老师13 小时前
GESP5级C++考试语法知识(十五、分治算法(二))
c++·算法·排序算法·分治算法·gesp5级·gesp五级
汉克老师13 小时前
GESP6级C++考试语法知识(五、格雷码)
c++·算法·位运算·异或·gesp6级·gesp六级·格雷码
程序leo源14 小时前
C语言知识总结
c语言·开发语言·c++·经验分享·笔记·青少年编程·c#
沫璃染墨14 小时前
二叉搜索树完全指南:从核心原理到增删查改全实现
开发语言·c++