c++ 虚函数表

在C++中,虚函数表(vtable)是存储在类的内存空间中的,每个包含虚函数的类都有一个虚函数表。这个表是一个存储虚函数地址的数组,它在编译时被创建。

虚函数表保存在.rdata只读数据段,也就是C++内存模型中的常量区虚函数表属于类,类的所有对象共享这个类的虚函数表。

虚表指针(vptr)是对象实例中的一个成员,它指向该对象所属类的虚函数表。当类的对象被实例化后,该对象会拥有一个指向虚函数表的指针,即虚函数指针。虚表指针的存储位置与对象存储的位置相同,即存在对象内存布局的最前面。

这些设计使得对象可以在运行时调用正确的虚函数,实现多态性。当存在多重继承时,一个类可能会有多个虚函数表,每个虚函数表包含了相应基类的虚函数地址。这样,通过虚函数指针,对象可以在运行时调用正确的虚函数,实现多态性。虚函数则位于代码段(.text),也就是C++内存模型中的代码区。这些设计使得对象可以在运行时调用正确的虚函数,实现多态性。当存在多重继承时,一个类可能会有多个虚函数表,每个虚函数表包含了相应基类的虚函数地址。这样,通过虚函数指针,对象可以在运行时调用正确的虚函数,实现多态性。

posted @   ponder776  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示