C++ |
您所在的位置:网站首页 › eosR6二代照相时有有一个方块和一个虚方框 › C++ |
虚表
在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 |