C++虚函数表

来源:互联网 发布:c语言比较字符串长度 编辑:程序博客网 时间:2024/06/06 01:24
  1. C++ 多态性可分为两类:静态多态和动态多态。函数重载和运算符重载实现的多态属于静态多态,动态多态性是通过虚函数实现的。**
  2. 每个含有虚函数的类有一张虚函数表(vtbl),表中每一项是一个虚函数的地址, 也就是说,虚函数表的每一项是一个虚函数的指针。
  3. 基类和继承类分别拥有自己的虚函数表
  4. 如果有虚函数,则虚函数表占用类内存的首地址
  5. 多重继承的情况下,对应基类有多个虚函数表
  6. 没有虚函数的C++类,是不会有虚函数表的。
  7. C++类的成员函数不占用内存,所有虚函数占用一个指针内存,用于指向虚函数表
    如下两张图说明C++类的成员变量内存、虚函数内存、成员函数内存的分布情况。
    这里写图片描述
    这里写图片描述
0 0