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指向了哪个对象,从而确定访问哪个虚表,从而实现了多态
相关推荐
handler0114 小时前
【Linux】线程与虚拟内存的底层世界
linux·运维·服务器·c++·线程·虚拟地址空间·共享内存
郝学胜-神的一滴15 小时前
C++11 工程级应用 09:告别无谓拷贝,解锁高性能移动语义
开发语言·数据结构·c++·vscode·软件工程·visual studio
hetao173383716 小时前
校内场-提高组 ZYZSC-S-Round 4
c++·算法
stellanke17 小时前
Linux网络编程实战2:TCP Socket 基础与实践
linux·网络·c++
蒸蒸yyyyzwd17 小时前
机试和Redis学习笔记
c++·笔记·面试
tdtsmt18 小时前
2026年SMT贴片加工选型指南:天地通电子推荐参考
c++
一木 之林18 小时前
插件、MCP、Skill 的区别?
java·c++·人工智能
ShineWinsu19 小时前
对于MySQL:内置函数的解析
linux·数据库·c++·mysql·面试·函数·查询
程序猿编码21 小时前
纯C++轻量计算机视觉推理引擎:基于GGML的端侧CV模型部署技术全解析
开发语言·c++·计算机视觉·大模型·transformer
Tairitsu_H1 天前
[C++] C++11新增构造:列表初始化和std::initializer_list
开发语言·c++·c++11·构造