C++中的类对象的内存分布以及虚函数表内存分布

  • Post author:
  • Post category:其他



目录


目录


一、前言


二、C++ 类对象的内存布局


三、函数调用



一、前言

C++的精髓是虚函数。虚函数带来的好处就是:可以定义一个基类的指针,其指向一个继承类,当通过基类的指针去调用函数时,

可以在运行时决定该调用基类的函数还是继承类的函数。虚函数是实现多态(动态绑定)/接口函数的基础。

可以说: 没有虚函数, C++将变得一无是处!

二、C++ 类对象的内存布局

要想知道C++对象的内存布局, 可以有多种方式, 比如:

  1. 输出成员变量的偏移, 通过offsetof宏来得到
  2. 通过调试器查看, 比如常用的VS

三、函数调用

  1. 如果不是虚函数, 直接调用指针对应的基本类的那个函数
  2. 如果是虚函数, 则查找虚函数表, 并进行后续的调用. 虚函数表在定义一个时, 编译器就为我们创建好了的. 所有的, 同一个类, 共用同一份虚函数表.(共享表,但是不是在同一块内存上)



版权声明:本文为qq_41687938原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。