C++

您所在的位置:网站首页 eosR6二代照相时有有一个方块和一个虚方框 C++

C++

2024-07-16 15:58| 来源: 网络整理| 查看: 265

虚表

在C++的多态机制中,使用了 virtual 关键字声明的函数称之为虚函数,每个有虚函数的类或者虚继承的子类,编译器都会为它生成一个虚拟函数表(简称:虚表,以下用 vftable表示),表中的每一个元素都指向一个虚函数的地址。

我们都知道在C++中对象生成有两个步骤: 1、分配内存空间 2、调用构造函数 多态机制发生在运行阶段,也就是对象生成阶段。那么问题就来了,**虚表(编译阶段生成)**是什么时候被写入到对象中的呢?——即,虚表指针与虚表何时关联?

1、探究虚函数表写入时机

目前有两种假设

假设一:虚表写入发生在在构造函数之前假设二:虚表写入发生在在构造函数之后

这里设计了一段代码来探究虚表具体的写入时机

#include #include class Base //定义基类 { public: Base(int a) :ma(a) { ::memset(this, 0, sizeof(this)); } virtual void Show() { std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3