0001-虚函数和虚表笔记

发布时间 2023-06-05 19:47:55作者: 马角的逆袭

目录

    1. 一个空对象至少占用1字节的空间
      展开查看:原因是在栈上分配2个对象时,要区分地址
      
         class Object { };
         void Function () { 
            Object o1, o2; // 需要区分o1,o2的地址
         }
      

    1. 空类有虚函数,需要占用一个指针的空间,即:编译器会插入一个虚函数表指针vptr

    1. 有虚函数指针,就意味着有虚函数表
      编译期时,编译器会把虚表指针赋值,安插在类中,Object::vptr=&Object::vftable
      这个过程是背着程序员进行的
      编译器充当地址管理器的角色

    多继承下的虚表

    1. 虚函数表会被编译进可执行文件.o或动态库.so中,运行时会被加载到内存页中